GetAsyncKeyState 返回致命链接错误

Nin*_*kid 4 c++ keyboard

我正在尝试用 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';
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

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

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

    fatal error LNK1120: 1 unresolved externals
Run Code Online (Sandbox Code Playgroud)

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

ybu*_*ill 6

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

#pragma comment(lib, "User32.lib")
Run Code Online (Sandbox Code Playgroud)

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

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