当我使用scons-qt4插件在Windows上构建时,我的应用程序总是打开一个控制台窗口,即使它有自己的窗口。使用QMake,您可以通过添加CONFIG + = console或类似的东西强制应用程序执行相同操作,但默认行为是禁止它。 QMake可以处理它 - 我也确定scons也可以。
到目前为止,我看到解决这个问题的唯一方法是在int main()周围使用#ifdef:
#ifdef WIN32
int WinMain (int _argc, char **_argv)
#else
int main (int _argc, char **_argv)
#endif
但那只是可恶的!
答案 0 :(得分:0)
所以,似乎我的问题几乎已经回答了here。现在,应用于scons,这两行是为我做的:
if (env ['PLATFORM'] == 'win32'):
env.Append (LINKFLAGS = ['-Wl,-subsystem,windows'])
另外,还要感谢[scons-users]邮件列表上的人们。特别是David Van Maren指出:
你可能会寻找你是否 链接到qtmain库。 最新的Qt文档只说 关于它:
--------------- qtmain Library
qtmain是一个帮助程序库 使开发人员能够编写 跨平台的main()函数 Windows和Symbian平台。 如果您不使用qmake或其他版本 像CMake这样的工具,那么你需要 链接到qtmain库。
它可能没有关系,但我想 一旦我将它添加到链接, 伪造的控制台为我们的Qt消失了 gui申请。
这可能是另一种解决问题的方法,例如,使用GCC + MinGW以外的其他工具编译程序时。