我有一个通过 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 窗口的控制台窗口。如何禁用控制台?
最佳答案
在 add_executable 中使用 WIN32
意味着您的应用程序将属于 SUBSYSTEM:WINDOWS 类型.也就是说,不需要控制台的应用程序。如果指定了,则不是 main(...)
,而是 WinMain(...)
(与 main 有不同的参数)是预期的。由于您的代码很可能没有此内容,因此您会收到报告的链接器错误。
删除 WIN32
意味着您的可执行文件将是默认类型 SUBSYSTEM:CONSOLE ,这解释了为什么您的应用程序可以运行,但会显示一个控制台。
因此,要修复它,请指定 WIN32
,但将 main()
更改为 WinMain()
。
关于visual-studio-2010 - Qt MinGW WIN32 到 Visual Studio 2010,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12193771/