首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对WinMain (C++ MinGW)的未定义引用

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

Stack Overflow用户
提问于 2019-10-10 13:34:10
回答 5查看 42.7K关注 0票数 23

目前,我正在尝试使用C++制作一个Windows应用程序。为了编写我的程序,我使用了MinGW (GCC)。但是,一旦我使用int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE, PWSTR pCmdLine, int nCmdShow)而不是int main(),编译器就会向我显示以下消息:

代码语言:javascript
运行
复制
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)。

EN

Stack Overflow用户

回答已采纳

发布于 2019-10-11 07:38:59

此示例代码使用wWinMain,但

需要注意的是,VisualC++支持“wWinMain”入口点,其中“lpCmdLine”参数是“LPWSTR”。通常,您将使用“_tWinMain”预处理器定义作为入口点,并声明“LPTSTR lpCmdLine”,以便您可以轻松地支持ANSI和Unicode构建。但是,MinGW CRT启动库不支持wWinMain,因此如果需要访问命令行参数,则必须坚持使用标准的“WinMain”并使用“GetCommandLine()”。

通过用Win32构建MinGW图形用户界面应用程序

在这种情况下,您可以使用WinMain代替。此程序不使用pCmdLine值,因此当您将wWinMain更改为WinMain,将PWSTR pCmdLine更改为PSTR pCmdLine时,应该对其进行编译。

如果以后需要unicode命令行,请使用LPWSTR cmd_line = GetCommandLineW();而不是WinMain参数。

较新的明威版本还支持-municode链接器选项,切换到备用启动代码,允许使用wWinMain而不是WinMain (或wmain而不是main)。将其添加到IDE或makefile中的命令行、链接器选项中。

代码语言:javascript
运行
复制
g++ other_options_and_arguments -municode
票数 14
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58324230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档