ncurses & Flüche - compiler Undefinierte Referenzen
Okay, so hatte ich ursprünglich versucht, einige Header, die waren angeblich nur für windows, meine schlecht, aber ich bin gegangen und nur wiedergegeben, was ich brauche, mit Flüchen.h. Jedoch bin ich weiterhin empfangen, genau die gleiche Art von Fehler.
"/usr/bin/gmake" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf
gmake[1]: Entering directory `/home/josh/Projects/Testing grounds/kbhit'
"/usr/bin/gmake" -f nbproject/Makefile-Debug.mk dist/Debug/GNU-Linux-x86/kbhit
gmake[2]: Entering directory `/home/josh/Projects/Testing grounds/kbhit'
mkdir -p build/Debug/GNU-Linux-x86
rm -f build/Debug/GNU-Linux-x86/main.o.d
g++ -c -g -MMD -MP -MF build/Debug/GNU-Linux-x86/main.o.d -o build/Debug/GNU-Linux-x86/main.o main.cpp
mkdir -p dist/Debug/GNU-Linux-x86
g++ -o dist/Debug/GNU-Linux-x86/kbhit build/Debug/GNU-Linux-x86/main.o
build/Debug/GNU-Linux-x86/main.o: In function `kbhit()':
/home/josh/Projects/Testing grounds/kbhit/main.cpp:20: undefined reference to `stdscr'
/home/josh/Projects/Testing grounds/kbhit/main.cpp:20: undefined reference to `wgetch'
/home/josh/Projects/Testing grounds/kbhit/main.cpp:23: undefined reference to `ungetch'
collect2: ld returned 1 exit status
gmake[2]: *** [dist/Debug/GNU-Linux-x86/kbhit] Error 1
gmake[2]: Leaving directory `/home/josh/Projects/Testing grounds/kbhit'
gmake[1]: *** [.build-conf] Error 2
gmake[1]: Leaving directory `/home/josh/Projects/Testing grounds/kbhit'
gmake: *** [.build-impl] Error 2
So, ich bin mir nicht 100% sicher, dass der code sollte auch funktionieren wie ich es erwarten. Ich bin gerade versucht zu kompilieren, dies zu testen. Nach der Flüche.h Dokumentation getch soll return-Wert ERR, wenn kein Schlüssel in der Warteschlange. Ich weiß wirklich nicht, was sonst noch erforderlich ist hier, ich dachte, dass alle ich tun musste, um den Kopf der Definitionen wurden in. Wie es scheint, das ist nicht genug, aber es muss etwas sein, was ich verpasst habe. Hier ist ein kurzer test, den ich versuche zu kompilieren
#include <cstdlib>
#include <iostream>
#include <curses.h>
#include <ncurses.h>
using namespace std;
bool kbhit()
{
int ch = getch();
if(ch != ERR)
{
ungetch(ch);
return true;
}
return false;
}
int main() {
while(!kbhit())
{
cout << "no input";
}
cout << "Mummy, it's over.";
return 0;
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du bist nicht die Verlinkung gegen die curses-Bibliothek. Sie müssen
-lncurses
zu der Zeile, die links in die ausführbare Datei in Ihrem makefile.ncurses
auf der Liste der Bibliotheken an den linker übergeben. Haben Sie versucht, die Dokumentation?Beachten Sie auch, dass die -lx-Argumente (wobei x die Bibliothek) sollten sich immer an die Quelle und Objekt-Dateien.
Müssen Sie auch die Links vor der Bibliothek, nicht nur kompilieren gegen die header. Hinzufügen
-lncurses
den link-Befehl. (Siehe auchman ncurses
.)Beispiel: