好吧所以我原本试图使用一些据说只用于Windows的标题,我的不好,但我已经离开了,只是用curses.h重现了我需要的东西。但是我仍然收到完全相同的错误。
"/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
所以,我并不是100%确定代码应该像我期望的那样工作。我只是想编译它来测试它。根据curses.h文档,如果没有键排队,则getch应该返回值ERR。我真的不知道这里还需要什么,我认为我需要做的只是包括定义所在的标题。虽然这似乎还不够,但我必须有一些错过的东西。这是我正在尝试编译的简短测试
#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;
}
答案 0 :(得分:5)
您没有链接到curses库。您需要在链接makefile中的可执行文件的行中提供-lncurses
。
答案 1 :(得分:1)
另请注意,-lx参数(其中x是您的库)应始终遵循源文件和目标文件。
答案 2 :(得分:0)
您还需要链接库,而不仅仅是针对标头进行编译。将-lncurses
添加到link命令。 (另见man ncurses
。)
答案 3 :(得分:0)
示例:
g++ -o myprogram myprogram.cpp -lncurses