2

我有一个通过 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 窗口的控制台窗口。如何禁用控制台?

4

1 回答 1

1

在 add_executable 中使用WIN32意味着您的应用程序将属于SUBSYSTEM:WINDOWS类型。也就是说,不需要控制台的应用程序。如果指定了这个,那么,而不是 a main(...), a WinMain(...)(与 main 有不同的参数)是预期的。由于您的代码很可能没有此功能,因此您会收到报告的链接器错误。

删除WIN32意味着您的可执行文件将是默认类型SUBSYSTEM:CONSOLE,这解释了为什么您的应用程序可以工作,但会显示一个控制台。

因此,要修复它,请指定WIN32但将您的更改main()WinMain().

于 2012-08-30T10:14:56.080 回答