Qt MinGW WIN32 到 Visual Studio 2010
Posted
技术标签:
【中文标题】Qt MinGW WIN32 到 Visual Studio 2010【英文标题】:Qt MinGW WIN32 to Visual Studio 2010 【发布时间】:2012-08-30 09:26:33 【问题描述】:我有一个通过 cmake 为 MinGW + Qt 创建的项目。 在 CMakeLists.txt 我有
add_executable (project-name WIN32 $MOC_SRCS $HEADERS $SOURCES $RESOURCES $QtApp_RCC_SRCS)
如果我尝试将其编译到 VisualStudio 2010 中,我会收到以下链接器错误:
MSVCRTD.lib(crtexew.obj) : error LNK2019: undefined reference _WinMain@16 in func ___tmainCRTStartup
然后我擦除WIN32
add_executable (project-name $MOC_SRCS $HEADERS $SOURCES $RESOURCES $QtApp_RCC_SRCS)
该项目可以编译并且工作正常,但是我有一个带有 Qt 窗口的控制台窗口。如何禁用控制台?
【问题讨论】:
【参考方案1】:在 add_executable 中使用WIN32
意味着您的应用程序将属于SUBSYSTEM:WINDOWS 类型。也就是说,不需要控制台的应用程序。如果指定了这个,那么,而不是 main(...)
,应该是 WinMain(...)
(它与 main 有不同的参数)。由于您的代码很可能没有此功能,因此您会收到报告的链接器错误。
删除WIN32
意味着您的可执行文件将是默认类型SUBSYSTEM:CONSOLE,这解释了为什么您的应用程序可以工作,但会显示一个控制台。
所以要修复它,请指定WIN32
,但将您的main()
更改为WinMain()
。
【讨论】:
我已经将 main() 编辑为 WinMain() 就像你说的code
#ifdef WIN32 int WinMain(int argc, char *argv[]) #else int main(int argc, char * argv[]) #endifcode
但我有同样的错误?我在项目中只有一个 main()
这不仅仅是从main
到WinMain
的变化。 WinMain
有完全不同的论点。 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nShowCmd );
int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
工作!谢谢!以上是关于Qt MinGW WIN32 到 Visual Studio 2010的主要内容,如果未能解决你的问题,请参考以下文章
在 Win32Proj 中将 Qt 与 Visual Studio (C++) 集成
Windows 的 QT5.3 安装程序抛出错误“不是有效的 win32 应用程序”
我是win7 64位的系统,下载了Qt 5.2.1 for Windows 32-bit (MinGW 4.8, OpenGL, 634 MB)请安装过的大神