我需要使用支持 unicode 的 ncurses,因此我将以下行添加到我的 .c 文件中。
#include <curses.h>
在我的 makefile 中,我使用 -lncursesw 作为标志。当调用像 get_wch() 这样的函数时,它告诉我“函数的隐式声明”。我使用的是 Arch Linux,所以我使用 pacman -S ncurses 安装了 ncurses。在/usr/include 中我可以找到cursesw.h,但它没有声明像get_wch() 这样的函数。在/lib下我可以找到libcursesw.so,那么这是怎么回事呢?
-lncursesw
is a linker标志,并且其本身不足以启用宽字符支持。您还应该添加compiler flag -I/usr/include/ncursesw
。没有这个你的#include <curses.h>
最终将包括/usr/include/curses.h
代替/usr/include/ncursesw/curses.h
如果您想要一种更标准的方法来查找所需的链接器和编译器标志,您可以使用pkg-config
。看看它们之间的区别:
$ pkg-config ncurses --cflags --libs
-D_GNU_SOURCE -D_DEFAULT_SOURCE -lncurses -ltinfo
$ pkg-config ncursesw --cflags --libs
-D_GNU_SOURCE -D_DEFAULT_SOURCE -I/usr/include/ncursesw -lncursesw -ltinfo
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)