如何在使用scons-qt4插件时隐藏Windows上的控制台窗口?

0 投票
1 回答
501 浏览
提问于 2025-04-16 12:26

我在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时。

撰写回答