代码之家  ›  专栏  ›  技术社区  ›  oz10

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

  •  0
  • oz10  · 技术社区  · 15 年前

    我正在构建一个C++应用程序,需要在Windows上使用PDCURSE。我正在使用MS VS2005中的VC++进行编译,并且收到一个链接错误。

     error LNK2019: unresolved external
     symbol __imp__GetKeyState@4 referenced
     in function __get_key_count
    

    共有11个错误,错误代码相同,符号不同。缺少的符号是uu imp_uu mapvirtualkeya@8、u imp_u findwindowa@8、u imp_uuuwsprintfa、u imp_u sendmessagea@16、u imp_u getwindowthreadprocessid@8、u imp_u messagebeep@4。几乎就像VC++找不到这些函数的适当的ASCII实现一样。我还应该注意到,pdcurse附带的演示程序编译得很好,尽管它们是C程序。

    在C++程序中,我使用的头包括

    extern "C" 
    { 
        #include <curses.h> 
    }
    

    我肯定我忘了链接到某个C标准库,但我不确定是哪个库。

    3 回复  |  直到 15 年前
        1
  •  2
  •   DavidK    15 年前

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

        2
  •  1
  •   Jonathan Leffler    15 年前

    你在你的机器上用MS VC++构建了pCurse吗?如果是的话,我不知道是怎么回事。如果没有,那么很有可能您使用的内容与MS VC++不兼容。从不同的C++编译器混合代码是令人费解的。这还取决于你所说的“其他几个错误”的含义。如果这是对“成百上千个错误”的荒谬的轻描淡写,那么这很可能就是问题所在。如果你只有几个(比如说另外半打或更少)类似的错误,那么问题就不太可能出现了。

        3
  •  0
  •   oz10    15 年前

    好吧,我知道了;)我用scons构建,我用一个变量包含user32.lib USER32_LIB ,默认为空字符串,但在Windows中将其定义为user32.lib时除外。在窗口区,我有一个打字错误 USER32_LIb 而不是 用户32 .