C 为什么linux上的诅咒会给我以下错误?

C 为什么linux上的诅咒会给我以下错误?,c,linker,curses,undefined-reference,C,Linker,Curses,Undefined Reference,试图让getch()工作以捕获按键 #include <curses.h> ... ... WINDOW *w; char f; w = initscr(); timeout(3000); f = getch(); endwin(); 这是一个链接错误。您是否正确链接到curses库 在C中使用库涉及两个步骤 您可以包含源文件中的相关头文件。这是为了让代码知道库函数的签名是什么。所以你做得对 编译代码时,您需要告诉链

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

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

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

这是一个链接错误。您是否正确链接到curses库

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

  • 您可以包含源文件中的相关头文件。这是为了让代码知道库函数的签名是什么。所以你做得对
  • 编译代码时,您需要告诉链接器链接到相关库,以便它可以找到这些函数的定义这是您没有做的。假设您使用的是gcc,那么向编译行添加
    -lncurses
    就可以了。这是一个例子

  • 以上答案正确,但格式如下:

    gcc-Wall程序.c-o二进制代码的名称

    当我这样做的时候:

    gcc-Wall-lncurses程序.c.


    它显然不起作用,所以应该在最后加上。

    使用-lncurses选项fwiw链接到curses,在2017年11月,最好使用
    pkg config
    ,请参阅对一个非常类似问题的回答。
    -Wall
    我用于调试。
    undefined reference to `wgetch'
    undefined reference to `stdscr'