目前,我正在尝试使用C++制作一个Windows应用程序。为了编写我的程序,我使用了MinGW (GCC)。但是,一旦我使用int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE, PWSTR pCmdLine, int nCmdShow)
而不是int main()
,编译器就会向我显示以下消息:
C:/mingw-w64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/lib/../lib/libmingw32.a(lib64_libmingw32_a-crt0_c.o):crt0_c.c:(.text.startup+0x2e): undefined reference to `WinMain'
collect2.exe: error: ld returned 1 exit status
The terminal process terminated with exit code: 1
我从本Windows应用程序教程中获得的编译示例代码:
我已经尝试过重新安装MinGW,但是没有帮助(我也在使用Windows 10)。
发布于 2019-10-11 07:38:59
此示例代码使用wWinMain
,但
需要注意的是,VisualC++支持“wWinMain”入口点,其中“lpCmdLine”参数是“LPWSTR”。通常,您将使用“_tWinMain”预处理器定义作为入口点,并声明“LPTSTR lpCmdLine”,以便您可以轻松地支持ANSI和Unicode构建。但是,MinGW CRT启动库不支持wWinMain,因此如果需要访问命令行参数,则必须坚持使用标准的“WinMain”并使用“GetCommandLine()”。
在这种情况下,您可以使用WinMain
代替。此程序不使用pCmdLine
值,因此当您将wWinMain
更改为WinMain
,将PWSTR pCmdLine
更改为PSTR pCmdLine
时,应该对其进行编译。
如果以后需要unicode命令行,请使用LPWSTR cmd_line = GetCommandLineW();
而不是WinMain
参数。
较新的明威版本还支持-municode
链接器选项,切换到备用启动代码,允许使用wWinMain
而不是WinMain
(或wmain
而不是main
)。将其添加到IDE或makefile中的命令行、链接器选项中。
g++ other_options_and_arguments -municode
https://stackoverflow.com/questions/58324230
复制相似问题