代码之家  ›  专栏  ›  技术社区  ›  Prateek Bana

LNK2019编译Win32程序时出错

  •  -3
  • Prateek Bana  · 技术社区  · 2 年前

    只是试图运行一个简单的Win32程序(来自Casey Muratori的手工英雄系列)

    它不是Visual Studio项目。它只是一个命令行中带有Visual studio C编译器的cpp文件。

    #include <windows.h>
    
    LRESULT CALLBACK MainWindowCallback(HWND Window, UINT Message, WPARAM WParam, LPARAM LParam){
        
        LRESULT Result = 0;
    
        return Result;
    
    }
    
    int CALLBACK WinMain (HINSTANCE Instance, HINSTANCE PrevInstance, LPSTR CommandLine, int ShowCode){
        
        WNDCLASS WindowClass = {};
        
        WindowClass.style = CS_OWNDC|CS_HREDRAW|CS_VREDRAW;
        WindowClass.lpfnWndProc = MainWindowCallback;
        WindowClass.hInstance = Instance;
        WindowClass.lpszClassName = "HandmadeHeroWindowClass";
    
        if(RegisterClass(&WindowClass)){
            HWND WindowHandle = {};
        } else {
    
            }
    
        return 0;
    }
    

    命令行:

    W:\src>cl -Zi handmade.cpp
    Microsoft (R) C/C++ Optimizing Compiler Version 19.39.33521 for x64
    Copyright (C) Microsoft Corporation.  All rights reserved.
    
    handmade.cpp
    Microsoft (R) Incremental Linker Version 14.39.33521.0
    Copyright (C) Microsoft Corporation.  All rights reserved.
    
    /out:handmade.exe
    /debug
    handmade.obj
    handmade.obj : error LNK2019: unresolved external symbol __imp_RegisterClassA referenced in function WinMain
    handmade.exe : fatal error LNK1120: 1 unresolved externals
    

    尝试用RegisterClassA RegisterClassW RegisterClassEx替换RegisterClass,但没有成功。Win32文档有特定于Visual Studio的答案。帮助

    0 回复  |  直到 2 年前
        1
  •  1
  •   catnip    2 年前

    您错过了与windows库的链接。这就是错误LNK2019出现的原因。

    使用此命令:

    cl handmade.cpp user32.lib
    

    此链接 user32.lib 使用您的代码,并将解决问题。