错误和解决方案的原因 - “未定义引用`newwin'”?

时间:2009-11-12 09:05:23

标签: c

我正在编译一个在shell上创建窗口的程序。当我编译时,我得到像

这样的错误
test.c:(.text+0x25): undefined reference to `newwin'
test.c:(.text+0x73): undefined reference to `wborder'
test.c:(.text+0xb6): undefined reference to `mvwprintw'
..
..

我的一个职能是

WINDOW *f_top, *f_bottom;
WINDOW *create_window(int n, int d, char *t){
        WINDOW *frame;
        WINDOW *w;
        frame = newwin(n, COLS, d, 0);
        box(frame,0,0);
        mvwprintw(frame,0,COLS/2-strlen(t)/2,t);
        wrefresh(frame);
        w = newwin(n-2, COLS-2, d+1, 1);
        idlok(w, TRUE);
        scrollok(w, TRUE);
        wclear(w);
        wrefresh(w);
        return w;
}

2 个答案:

答案 0 :(得分:3)

您需要链接curses库。函数在那里定义。

尝试

gcc ... test.c ... -lcurses ...

或者

gcc ... test.c ... -lncurses ...

答案 1 :(得分:0)

更明确一点,

首先,如果需要,您需要安装curses(或ncurses)库。

其次,包括curses.h

第三,需要找到这些,你可能会遇到$ PATH的问题。

最后,根据读取的时间长短,可能会有“弃用”功能。 - 在curses.h(以及网页)中搜索名称。

通常,对于64位Linux安装,所涉及的资产可以在以下位置找到:

/usr/lib/x86_64-linux-gnu/libncurses.so

/usr/include/curses.h