2008-12-30 36 views
0

我正在构建一个C++应用程序,并需要在Windows上使用PDCurses。我正在使用MS VS 2005的VC++进行编译,并且出现链接错误。如何将PDCurses链接到Windows上的C++应用程序?

error LNK2019: unresolved external 
symbol [email protected] 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标准库链接的标题,但我不知道是哪一个。

回答

2

GetKeyState()是“user32.dll”中的Windows函数,因此您需要确保您链接到“user32.lib”。您可能还需要确保它位于链接程序库列表中的PDCurses库之后。

+0

是的,我已经追踪到这些潜在的问题,并且我连接到User32.lib,advapi32.lib等等。这似乎没有帮助。我认为用VC++试图链接C代码有一些问题,但我无法想象为什么。 – paxos1977 2008-12-30 16:42:23

+0

您是否检查过订单,以便user32.lib出现在PDCurses.lib之后? – DavidK 2008-12-30 22:34:10

1

您是否在您的机器上创建了PDCurses - 使用MS VC++?如果是这样,我不确定发生了什么。如果没有,那么你有一个很好的机会,你使用的是不兼容MS VC++。混合来自不同C++编译器的代码是充满的。这还取决于“其他几个错误”的含义。如果这是对“数百个错误”的荒谬的轻描淡写,那么这可能是麻烦。如果你只有少数几个(比如说另一半或更少)类似的错误,那么它就不太可能成为问题。

0

好吧,我明白了这一点;)我正在用scons构建,其中包含user32.lib,其变量为USER32_LIB,该变量默认为空字符串,除非在窗口中定义为user32.lib。在窗口部分,我有一个错字,我有USER32_LIb而不是USER32_LIB

相关问题