如何将PDCurses链接到Windows上的C ++应用程序?

时间:2008-12-30 04:33:10

标签: c++ windows linker ncurses pdcurses

我正在构建一个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标准库,但我不确定是哪一个。

3 个答案:

答案 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