目前,我正在尝试使用c ++制作Windows应用程序。为了编译我的程序,我使用Mingw GCC。顺便说一句,我在Windows 10上。但是,一旦我使用它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):对WinMain的未定义引用collect2.exe:错误:ld返回1退出状态终端进程终止于退出代码:1
我尝试编译的示例代码是从此Windows应用程序教程中获得的:示例代码
我已经尝试过重新安装mingw,但没有帮助。这就是为什么我希望这里有人可以帮助我解决我的问题。先感谢您!
此示例代码使用wWinMain
但
需要注意的一件事是Visual C ++支持“ 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
参数。
较新的Mingw版本还支持将-municode
链接器选项切换到备用启动代码,从而允许使用wWinMain
代替WinMain
(或wmain
代替main
)。将其添加到命令行,IDE或makefile中的链接器选项。
g++ other_options_and_arguments -municode
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句