C 使用诅咒从键盘获取字符。h

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):

我得到以下错误:

/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 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)