【问题标题】:GetAsyncKeyState returning fatal link errorGetAsyncKeyState 返回致命链接错误
【发布时间】:2017-02-24 08:06:35
【问题描述】:

我正在尝试用 c++ 制作一个基本的控制台游戏,当我尝试在以下代码中使用 GetAsyncKeyState 时:

   if(GetAsyncKeyState(VK_UP) != 0){
        int y2 = (y - 1);
        switch(Map[y2][x]){
            case ' ':{
                Map[y][x] = ' ';
                y -= 1;
                Map[y2][x] = 'O';
            }
        }
    }

...但是当我尝试编译它时,我不断收到以下错误:

    error LNK2019: unresolved external symbol __imp__GetAsyncKeyState@4 referenced in function "void __cdecl Draw(void)" (?Draw@@YAXXZ)

    fatal error LNK1120: 1 unresolved externals

我不确定是否需要包含除 iostreamwindows.h 之外的任何库

【问题讨论】:

  • 我知道其他用户也问过类似的问题,但不完全是这样。

标签: c++ keyboard


【解决方案1】:

错误来自链接器。您必须与定义 GetAsyncKeyState 符号的 User32.lib 链接(实际上它是 User32.dll 的导入库)。你可以通过写作来做到这一点

#pragma comment(lib, "User32.lib")

在您的 .cpp 文件中,或将 User32.lib 添加到您的链接器命令行中。

请注意,如果您使用 Microsoft Visual Studio 并创建一个非空的 Win32 项目,则所需的默认 Windows 系统库已与之链接。但是,由于您没有说明具体是如何编译和链接的,所以我不会在这个话题上展开更多。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-13
    • 2014-01-15
    • 1970-01-01
    • 2010-10-18
    • 1970-01-01
    • 1970-01-01
    • 2021-04-01
    • 2017-01-28
    相关资源
    最近更新 更多