目前我正在尝试使用 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()"参数.
通过 使用 MinGW 构建 Win32 GUI 应用程序>
在这种特定情况下,您可以改用 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
currently I am trying to make a windows application using c++. For compiling my program I use Mingw GCC. Btw I'm on Windows 10.
But as soon as I use int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE, PWSTR pCmdLine, int nCmdShow)
instead of int main()
the compiler shows me following message:
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
The example code I tried to compile I got from this Windows application tutorial: Example Code
I have already tried reinstalling mingw but it did not help. That's why i hoped someone here could help me with my problem. Thank you in advance!
This example code uses wWinMain
but
One thing to note is that Visual C++ supports a "wWinMain" entry point where the "lpCmdLine" parameter is a "LPWSTR". You would typically use the "_tWinMain" preprocessor definition for your entry point and declare "LPTSTR lpCmdLine" so that you can easily support both ANSI and Unicode builds. However, the MinGW CRT startup library does not support wWinMain, so you’ll have to stick with the standard "WinMain" and use "GetCommandLine()" if you need to access command line arguments.
via Building Win32 GUI Applications with MinGW
In this specific case, you can use WinMain
instead. This program doesn't use pCmdLine
value, so it should compile when you change wWinMain
to WinMain
and PWSTR pCmdLine
to PSTR pCmdLine
.
If you later would need unicode command line use LPWSTR cmd_line = GetCommandLineW();
instead of WinMain
argument.
Newer Mingw versions also support -municode
linker option switching to alternate startup code allowing to use wWinMain
instead of WinMain
(or wmain
instead of main
). Add it to your command line, linker options in IDE or makefile.
g++ other_options_and_arguments -municode
这篇关于对 WinMain (C++ Mingw) 的未定义引用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!