如何在使用scons-qt4插件时隐藏Windows上的控制台窗口?
我在Windows上用scons-qt4插件构建应用时,应用总是会打开一个控制台窗口,尽管它本身已经有自己的窗口了。用QMake的话,可以通过添加CONFIG += console之类的设置来强制应用这样做,但默认情况下是不会打开控制台的。QMake可以处理这个问题,我相信scons也能做到。
目前我看到的解决这个问题的唯一方法就是在int main()周围加上#ifdef:
#ifdef WIN32
int WinMain (int _argc, char **_argv)
#else
int main (int _argc, char **_argv)
#endif
但这实在是太糟糕了!
1 个回答
0
看起来,我的问题几乎已经在这里得到了回答。现在,针对scons,我用了这两行代码,问题就解决了:
if (env ['PLATFORM'] == 'win32'):
env.Append (LINKFLAGS = ['-Wl,-subsystem,windows'])
另外,特别感谢[scons-users]邮件列表上的朋友们。尤其是David Van Maren提到:
你可以看看你是否在链接qtmain库。
最新的Qt文档只提到:
--------------- qtmain库
qtmain是一个辅助库,它让开发者可以在Windows和Symbian平台上编写跨平台的main()函数。
如果你不使用qmake或其他构建工具,比如CMake,那么你需要链接qtmain库。
这可能和问题无关,但我觉得一旦我把它添加到链接中,我们的Qt图形应用程序就不再出现那个多余的控制台窗口了。
这可能是解决问题的另一种方法,比如当程序是用其他工具编译,而不是GCC + MinGW时。