[gcc] Compilen lukt niet , herkent Getch niet.

Pagina: 1
Acties:

  • 3V3RT
  • Registratie: Januari 2004
  • Laatst online: 30-01 09:45
ik probeer een Cfile te compilen op de volgende manier:
code:
1
gcc -o compiled cprogramma.c


Hij geeft dan een error die er op neer komt dat hij de functie getch() niet herkent.

Ik draai Ubuntu Edgy Eft.
Wat kan het probleem zijn?

  • blaataaps
  • Registratie: Juli 2001
  • Niet online
gcc zegt "komt er op neer dat ik de functie getch() niet herken" of geeft ie een andere, explicietere error?
Heb je de noodzakelijke headerfiles voor getch ge-include?

  • serkoon
  • Registratie: April 2000
  • Niet online

serkoon

mekker.

Je zult in ieder geval tegen ncurses aan moeten linken. Dit kan met -lncurses (ongeveer) en eventueel met -L <path van die lib>.

  • PommeFritz
  • Registratie: Augustus 2001
  • Laatst online: 24-11-2025

PommeFritz

...geen friet

*edit: spuit 11*

[ Voor 89% gewijzigd door PommeFritz op 11-03-2007 13:12 ]

FireFox - neem het web in eigen hand


  • 3V3RT
  • Registratie: Januari 2004
  • Laatst online: 30-01 09:45
stdio.h en stdlib.h heb ik ge-include.
error:
code:
1
abcfunctie.c:(.text+0x3e): undefined reference to `getch'


je moet dus apart de libraries includen?

[ Voor 15% gewijzigd door 3V3RT op 11-03-2007 13:14 ]


  • blaataaps
  • Registratie: Juli 2001
  • Niet online
Misschien moet je dan de header-file includen waar getch wel inzit, zoals ik net vroeg :)

  • Tommy_G
  • Registratie: Februari 2007
  • Laatst online: 28-12-2025
Ik heb absoluut geen verstand van programmeren, maar je hebt 2 verschillende ' gebruikt bij getch. Herkent die het daarom misschien niet?

  • serkoon
  • Registratie: April 2000
  • Niet online

serkoon

mekker.

Tommy_G schreef op zondag 11 maart 2007 @ 13:14:
Ik heb absoluut geen verstand van programmeren, maar je hebt 2 verschillende ' gebruikt bij getch. Herkent die het daarom misschien niet?
Da's puur de foutmelding zelf.

Verwijderd

blaataaps schreef op zondag 11 maart 2007 @ 13:13:
Misschien moet je dan de header-file includen waar getch wel inzit, zoals ik net vroeg :)
conio.h dus

  • serkoon
  • Registratie: April 2000
  • Niet online

serkoon

mekker.

Ik zie alleen een Wine conio.h, eigenlijk. Maar misschien dat Linux in libc een getch() heeft, terwijl FreeBSD dat alleen in ncurses heeft zitten (include dus curses.h).

  • XTerm
  • Registratie: Juli 2001
  • Laatst online: 10-06-2025
Kijk, een C programma kent geen enkele functie. Voor elke functie die je gebruiken wil moet je twee dingen doen. Enerzijds, moet tijdens het compileren bekend zijn wat voor argumenten de functie heeft en wat er ge returned kan worden. De inhoud van de functie zelfs is niet nodig. Daartoe gebruik je headerfiles, die de lijsten met functies bevatten. In jouw geval heb je <curses.h> nodig.

Tijdens het linken moet ook de objectcode van die functie aanwezig zijn. Standaard wordt tegen de C library gelinked. Dat geeft je functies zoals printf, en select. Ncurses zit niet in die C library, waardoor je dus moet linken tegen een extra library. Dat doe je met -lncurses of -lcurses.

  • GX
  • Registratie: Augustus 2000
  • Laatst online: 14-05-2025

GX

Nee.

Dat getch het met borland op Windows doet is de schuld van borland; onder linux heb je daar (n)curses voor nodig; of je implementeert 'm zelf.

  • sam.vimes
  • Registratie: Januari 2007
  • Laatst online: 07-01 22:10
Compiler aanroepen met optie -Wall zou een waarschuwing moeten geven, omdat getch() in ncurses.h gedeclareerd wordt en niet in stdio.h of stdlib.h. Er moet dus ook nog een #include <ncurses.h> bij in de code.
Verder -lncurses (kleine letter L) toevoegen aan linker-opties zodat de juiste bibliotheek (libncurses.a) wordt meegelinkt.

  • igmar
  • Registratie: April 2000
  • Laatst online: 31-01 23:50

igmar

ISO20022

3V3RT schreef op zondag 11 maart 2007 @ 13:05:
ik probeer een Cfile te compilen op de volgende manier:
code:
1
gcc -o compiled cprogramma.c


Hij geeft dan een error die er op neer komt dat hij de functie getch() niet herkent.
Voor dit soort vragen heeft *NIX al een jaartje of, euh, 30 manpages :

code:
1
man getch


waarmee je er al snel was achtergekomen dat het geen standaard c lib functie is, maar een onderdeel van (n)curses.

[ Voor 12% gewijzigd door igmar op 12-03-2007 11:31 ]

Pagina: 1