C 使用诅咒从键盘获取字符。h
我试图用诅咒从键盘上得到一个字符。 这是我的源代码(get_char_example.c): 我得到以下错误: /tmp/ccjaXwRU.o:在函数“main”中:C 使用诅咒从键盘获取字符。h,c,gcc,linker,curses,C,Gcc,Linker,Curses,我试图用诅咒从键盘上得到一个字符。 这是我的源代码(get_char_example.c): 我得到以下错误: /tmp/ccjaXwRU.o:在函数“main”中: get_char_example.c:(.text+0x1c): undefined reference to `stdscr' get_char_example.c:(.text+0x24): undefined reference to `wgetch' collect2: error: ld returned 1 exit
get_char_example.c:(.text+0x1c): undefined reference to `stdscr'
get_char_example.c:(.text+0x24): undefined reference to `wgetch'
collect2: error: ld returned 1 exit status
使用:gcc(gcc)7.2.0
Arch Linux 4.13.9-1-Arch
提前谢谢 这是一个链接器错误(请参阅,几乎是重复的)ncurses
是众所周知的(这会在需要时提供更多依赖项),因此请尝试使用以下工具进行编译:
gcc -Wall -Wextra -g \
$(pkg-config --cflags ncurses) \
get_char_example.c \
$(pkg-config --libs ncurses)
您希望使用所有警告和调试信息;您可以在emacs
下或使用ddd
进行调试
更好的是,使用一些工具(比如或ninja
)。从中汲取灵感,写下你的(其中制表符很重要)
在我的Debian Sid上,pkg config--cflags ncurses
提供-D_GNU SOURCE-D_DEFAULT_SOURCE
和pkg config--libs ncurses
提供-lncurses-ltinfo
,因此仅仅链接-lncurses
是不够的(这就是为什么在2017年11月的今天,它还没有完全复制;几年前,仅仅链接-lncurses
就足够了,而今天就不行了)
使用<代码> pkg配置文件-列出所有查找所有已知的包和库;在开发库时还考虑提供一些<代码> .pc <代码>文件。< /P>
顺便说一句,您的程序应该从使用initscr
初始化开始,并使用printw
;即使有点旧也要读取
还请注意,在21世纪使用ASCII是过时的。程序和计算机使用,这有着深刻的影响,你应该知道(因为一个字符可以跨越几个字节)。我的法语键盘有
键
、§
、€
和键(即使使用美国键盘,您也可以粘贴它们)这些都不在ASCII中。也考虑使用一些UTF-8库,例如可能的副本,我相信它不是复制品。然而,问题确实缺乏研究的努力。为什么这不是复制品?它们显然不与该库链接,因为在复制品中答案是覆盖的,因为另一个答案不提及< c。ode>pkg config
在一些发行版上,尤其是我的Debian Sid,ncurses
依赖于其他库。那么就找一个更好的副本吧,而不是试图从一个常见问题中快速轻松地得分。我让你去寻找一个。我尝试快速地找到一个副本,但失败了。但你在2017年找到的那一个不正确在Debian/Sid上。这在几年前是正确的。ncurses
现在依赖于tinfo
,而几年前的发行版不是这样。教新手在相关的时候使用pkg config
,另一个答案甚至没有提到。
get_char_example.c:(.text+0x1c): undefined reference to `stdscr'
get_char_example.c:(.text+0x24): undefined reference to `wgetch'
collect2: error: ld returned 1 exit status
gcc -Wall -Wextra -g \
$(pkg-config --cflags ncurses) \
get_char_example.c \
$(pkg-config --libs ncurses)