(C ++)使用g ++返回“对WinMain @ 16的未定义引用”的Win32 API示例代码

灰火

我将G ++编译器与notepad ++一起使用。

我正在按Windows跟随一个教程,我使用的代码是Windows教程中的示例代码(https://docs.microsoft.com/zh-cn/windows/win32/learnwin32/your-first-windows-program)我将其粘贴到记事本中并尝试对其进行编译,但是收到一条错误消息。

这是代码和消息:

#ifndef UNICODE
#define UNICODE
#endif 

#include <windows.h>

LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);

int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE, PWSTR pCmdLine, int nCmdShow)
{
    // Register the window class.
    const wchar_t CLASS_NAME[]  = L"Sample Window Class";
    
    WNDCLASS wc = { };

    wc.lpfnWndProc   = WindowProc;
    wc.hInstance     = hInstance;
    wc.lpszClassName = CLASS_NAME;

    RegisterClass(&wc);

    // Create the window.

    HWND hwnd = CreateWindowEx(
        0,                              // Optional window styles.
        CLASS_NAME,                     // Window class
        L"Learn to Program Windows",    // Window text
        WS_OVERLAPPEDWINDOW,            // Window style

        // Size and position
        CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,

        NULL,       // Parent window    
        NULL,       // Menu
        hInstance,  // Instance handle
        NULL        // Additional application data
        );

    if (hwnd == NULL)
    {
        return 0;
    }

    ShowWindow(hwnd, nCmdShow);

    // Run the message loop.

    MSG msg = { };
    while (GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

    return 0;
}

LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch (uMsg)
    {
    case WM_DESTROY:
        PostQuitMessage(0);
        return 0;

    case WM_PAINT:
        {
            PAINTSTRUCT ps;
            HDC hdc = BeginPaint(hwnd, &ps);



            FillRect(hdc, &ps.rcPaint, (HBRUSH) (COLOR_WINDOW+1));

            EndPaint(hwnd, &ps);
        }
        return 0;

    }
    return DefWindowProc(hwnd, uMsg, wParam, lParam);
}

这是我用来编译的命令(powershell)

PS  g++ main.cpp

这是我在尝试编译时收到的消息(PowerShell)

c:/ mingw / bin /../ lib / gcc / mingw32 / 6.3.0 /../../../ libmingw32.a(main.o):(。text.startup + 0xa0):未定义引用`WinMain @ 16'collect2.exe:错误:ld返回1退出状态

如果我试图重新命名wWinMain,以WinMain它给人的错误

main.cpp:9:12:错误:C函数的声明'int WinMain(HINSTANCE,HINSTANCE,PWSTR,int)'int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE,PWSTR pCmdLine,int nCmdShow)
从c:\ mingw \ include \ windows.h:44:0,来自main.cpp:5:c:\ mingw \ include \ winbase.h:1263:14:注意:以前的声明'int WinMain(HINSTANCE,HINSTANCE,LPSTR,int) 'int APIENTRY WinMain(HINSTANCE,HINSTANCE,LPSTR,int);

如果我尝试使用该命令,g++ main.cpp -municode则会收到消息

g ++。exe:错误:无法识别的命令行选项“ -municode”

灰火

在行中

int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE, PWSTR pCmdLine, int nCmdShow)

我更改wWinMain为,WinMain 然后更改PWSTRLPSTR,现在可以使用了。我不知道为什么。希望它对遇到相同问题的人有所帮助(-:

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

未定义对'WinMain @ 16'的引用(C ++)

来自分类Dev

C ++代码块错误:对SDL_PollEvent和WinMain @ 16的未定义引用

来自分类Dev

C编程未定义对“ WinMain @ 16”的引用

来自分类Dev

对WinMain @ 16的未定义引用(代码块)

来自分类Dev

对WinMain @ 16的未定义引用(代码块)

来自分类Dev

对WinMain的未定义引用(C ++ Mingw)

来自分类Dev

代码块中的错误消息:对“ WinMain @ 16”的未定义引用

来自分类Dev

G ++对`WinMain'的未定义引用(无IDE)

来自分类Dev

错误对“ WinMain @ 16”的未定义引用

来自分类Dev

VS代码未定义_WIN32

来自分类Dev

Windows API编程,使用c:对OpenJobObject的未定义引用

来自分类Dev

未定义引用'WinMain @ 16'minGW32-make错误

来自分类Dev

使用mingw编译websocketpp示例代码时未定义对`std :: errc :: operation_canceled`的引用

来自分类Dev

在本机环境中使用SDL编译时未定义对“ WinMain”的引用

来自分类Dev

未定义对WinMain的引用:使用Cygwin,SDL2和Netbeans时

来自分类Dev

如果未链接任何使用代码,则对g ++中的静态const成员的未定义引用

来自分类Dev

Cygwin中对WinMain的未定义引用

来自分类Dev

在C ++代码中对C函数的未定义引用

来自分类Dev

使用C ++ Win32 API启用视觉样式吗?

来自分类Dev

使用MinGW使用网络代码编译简单的C ++ SFML文件会引发错误“对IpAddress的未定义引用”

来自分类Dev

编译时SIFT代码(C ++)中的未定义引用

来自分类Dev

无法编译C ++代码-“未定义的引用-”

来自分类Dev

代码块和C对getline的未定义引用

来自分类Dev

编译时SIFT代码(C ++)中的未定义引用

来自分类Dev

使用混合C和C ++的函数的未定义引用

来自分类Dev

代码返回“未定义”

来自分类Dev

g_cond_wait()的此示例代码是否会导致未定义的行为?

来自分类Dev

C:使用extern时未定义对变量的引用

来自分类Dev

在C ++中使用库时“未定义的引用”

Related 相关文章

  1. 1

    未定义对'WinMain @ 16'的引用(C ++)

  2. 2

    C ++代码块错误:对SDL_PollEvent和WinMain @ 16的未定义引用

  3. 3

    C编程未定义对“ WinMain @ 16”的引用

  4. 4

    对WinMain @ 16的未定义引用(代码块)

  5. 5

    对WinMain @ 16的未定义引用(代码块)

  6. 6

    对WinMain的未定义引用(C ++ Mingw)

  7. 7

    代码块中的错误消息:对“ WinMain @ 16”的未定义引用

  8. 8

    G ++对`WinMain'的未定义引用(无IDE)

  9. 9

    错误对“ WinMain @ 16”的未定义引用

  10. 10

    VS代码未定义_WIN32

  11. 11

    Windows API编程,使用c:对OpenJobObject的未定义引用

  12. 12

    未定义引用'WinMain @ 16'minGW32-make错误

  13. 13

    使用mingw编译websocketpp示例代码时未定义对`std :: errc :: operation_canceled`的引用

  14. 14

    在本机环境中使用SDL编译时未定义对“ WinMain”的引用

  15. 15

    未定义对WinMain的引用:使用Cygwin,SDL2和Netbeans时

  16. 16

    如果未链接任何使用代码,则对g ++中的静态const成员的未定义引用

  17. 17

    Cygwin中对WinMain的未定义引用

  18. 18

    在C ++代码中对C函数的未定义引用

  19. 19

    使用C ++ Win32 API启用视觉样式吗?

  20. 20

    使用MinGW使用网络代码编译简单的C ++ SFML文件会引发错误“对IpAddress的未定义引用”

  21. 21

    编译时SIFT代码(C ++)中的未定义引用

  22. 22

    无法编译C ++代码-“未定义的引用-”

  23. 23

    代码块和C对getline的未定义引用

  24. 24

    编译时SIFT代码(C ++)中的未定义引用

  25. 25

    使用混合C和C ++的函数的未定义引用

  26. 26

    代码返回“未定义”

  27. 27

    g_cond_wait()的此示例代码是否会导致未定义的行为?

  28. 28

    C:使用extern时未定义对变量的引用

  29. 29

    在C ++中使用库时“未定义的引用”

热门标签

归档