11

试图让 getch() 工作以捕获按键。

    #include <curses.h>
    ...
    ...
    WINDOW *w;
    char f;

   w = initscr();
   timeout(3000);
   f = getch();
   endwin();

给我以下错误:-

undefined reference to `wgetch'
undefined reference to `stdscr'
4

2 回答 2

19

那是链接错误。您是否正确链接到 curses 库?

在 C 中使用库涉及两个步骤。

  1. #include从源文件中获取相关的头文件。这样您的代码就知道库函数的签名是什么。所以你做对了。
  2. 编译代码时,您需要告诉链接器链接到相关库,以便它可以找到这些函数的定义。 这是你没有做的。假设您正在使用 gcc 然后添加-lncurses到编译行应该这样做。这是链接的解释
于 2009-10-03T10:29:11.630 回答
0

上面的答案是正确的,但格式是:

gcc -Wall program.c -o name_of_binary -lncurses

当我这样做时:

gcc -Wall -lncurses program.c...

它没有工作,所以显然应该在最后加上。

于 2020-07-02T18:25:56.757 回答