为啥 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程序设计(搭建开发环境--curses)

为啥 pHp 会给我这个错误? [复制]

Linux上的chromedriver NullPointerException错误

请解释为啥这个 C 代码给我一个分段错误?

为啥 Django 管理员登录给我 403 CSRF 错误?

为啥我的 CUDA 光线追踪器给我这个线程布局的错误代码 700?