我正在构建一个C ++应用程序,需要在Windows上使用PDCurses。我正在使用MS VS 2005中的VC ++编译,我收到链接错误。
error LNK2019: unresolved external symbol __imp__GetKeyState@4 referenced in function __get_key_count
有11个错误都具有相同的错误代码和不同的符号。缺少的符号是__imp__MapVirtualKeyA @ 8,__ imp__FindWindowA @ 8,__ imp__wsprintfA,__ imp__SendMessageA @ 16,__ imp__GetWindowThreadProcessId @ 8,__ imp__MessageBeep @ 4。它几乎就像VC ++找不到这些函数的相应ASCII实现。我还应该注意,PDCurses附带的演示程序编译得很好,尽管它们是C程序。
在C ++程序中,我使用
包含标题extern "C"
{
#include <curses.h>
}
我确定我忘记链接某些C标准库,但我不确定是哪一个。
答案 0 :(得分:2)
GetKeyState()是“user32.dll”中的Windows函数,因此您需要确保链接“user32.lib”。您可能还需要确保它位于链接器库列表中的PDCurses库之后。
答案 1 :(得分:1)
您是否在自己的计算机上使用MS VC ++构建了PDCurses?如果是这样,我不确定是什么。如果没有,那么你正在使用的与MS VC ++不兼容的可能性很大。混合来自不同C ++编译器的代码是非常充实的。它还取决于你的“其他几个错误”的含义。如果对于“数百个错误”这是一个怪诞的低调,那么这可能是麻烦。如果您只有少数(比如说是另外的半打或更少)类似的错误,那么它就不太可能成为麻烦。
答案 2 :(得分:0)
好吧,我想出来了;)我正在使用scons构建,我包含了带有变量USER32_LIB
的user32.lib,默认为空字符串,除了在windows上定义为user32.lib 。在Windows部分,我有一个拼写错误,我有USER32_LIb
而不是USER32_LIB
。