0

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

4

3 回答 3

2

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

于 2008-12-30T06:42:30.890 回答
1

您是否使用 MS VC++ 在您的机器上构建了 PDCurses?如果是这样,我不确定发生了什么。如果不是,那么您使用的东西很有可能与 MS VC++ 不兼容。混合来自不同 C++ 编译器的代码是令人担忧的。这也取决于您所说的“其他几个错误”是什么意思。如果这是对“数百个错误”的荒谬轻描淡写,那么这可能就是问题所在。如果您只有几个(比如另外六个或更少)类似的错误,那么问题就不太可能出现。

于 2008-12-30T06:43:56.333 回答
0

好的,我想通了;)我正在使用 scons 构建,我在 user32.lib 中包含了一个变量USER32_LIB,该变量默认为空字符串,但在将其定义为 user32.lib 的窗口除外。在 windows 部分,我有一个错字,我有USER32_LIb而不是USER32_LIB.

于 2008-12-31T00:03:05.533 回答