为啥 linux 上的 curses 给我以下错误?
Posted
技术标签:
【中文标题】为啥 linux 上的 curses 给我以下错误?【英文标题】:Why is curses on linux giving me following error?为什么 linux 上的 curses 给我以下错误? 【发布时间】:2010-12-03 13:27:15 【问题描述】:试图让 getch() 工作以捕获按键。
#include <curses.h>
...
...
WINDOW *w;
char f;
w = initscr();
timeout(3000);
f = getch();
endwin();
给我以下错误:-
undefined reference to `wgetch'
undefined reference to `stdscr'
【问题讨论】:
【参考方案1】:以上答案正确,但格式为:
gcc -Wall program.c -o name_of_binary -lncurses
当我这样做时:
gcc -Wall -lncurses program.c...
它没有工作,所以显然它应该在最后加上。
【讨论】:
-Wall
用于调试。【参考方案2】:
这是一个链接错误。您是否正确链接到 curses 库?
在 C 中使用库涉及两个步骤。
-
你
#include
你的源文件中的相关头文件。这样您的代码就知道库函数的签名是什么。所以你这样做是正确的。
编译代码时,您需要告诉链接器链接到相关库,以便它可以找到这些函数的定义。 这是你没有做的事情。假设您正在使用 gcc,然后将 -lncurses
添加到编译行应该可以。这是explanation of linking。
【讨论】:
使用 -lncurses 选项链接到 curses FWIW,2017 年 11 月最好使用pkg-config
,请参阅this 对一个非常相似的问题的回答。以上是关于为啥 linux 上的 curses 给我以下错误?的主要内容,如果未能解决你的问题,请参考以下文章
Linux上的chromedriver NullPointerException错误