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

发布于 2024-10-19 03:54:25 字数 357 浏览 3 评论 0原文

当我使用 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

但这太可恶了!

When I'm building on Windows with scons-qt4 plugin, my application always opens a console window, even though it has its own windows. With QMake, you could force application to do the same by adding CONFIG += console or something similar, but the default behaviour is to suppress it. QMake can handle it - I'm sure scons can, too.

The only way I see so far to solve this problem would be to use #ifdef around int main():

#ifdef WIN32
int WinMain (int _argc, char **_argv)
#else
int main (int _argc, char **_argv)
#endif

But that's just abominable!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

盛夏尉蓝 2024-10-26 03:54:25

所以,看来我的问题几乎已经得到解答 这里。现在,应用于 scons,这两行代码为我做到了:

if (env ['PLATFORM'] == 'win32'):
    env.Append (LINKFLAGS = ['-Wl,-subsystem,windows'])

另外,衷心感谢 [scons-users] 邮件列表上的人们。 David Van Maren 特别指出:

您可能会寻找您是否是
链接到 qtmain 库。
最新的Qt文档只说
关于它:

--------------- qtmain 库

qtmain 是一个辅助库
使开发人员能够编写
跨平台 main() 函数
Windows 和 Symbian 平台。
如果您不使用 qmake 或其他构建
诸如CMake之类的工具,那么你需要
链接到 qtmain 库。

<小时>

可能不相关,但我认为
一旦我将其添加到链接中,
我们的 Qt 的伪造控制台消失了
图形用户界面应用程序。

这可能是解决问题的另一种方式,例如当使用GCC + MinGW以外的其他工具编译程序时。

So, it seems, my question was almost already answered here. Now, applied to scons, these two lines did it for me:

if (env ['PLATFORM'] == 'win32'):
    env.Append (LINKFLAGS = ['-Wl,-subsystem,windows'])

Also, kind thanks to the folks on the [scons-users] mailing list. In particular, David Van Maren pointed out that:

You might look for whether you are
linking against the qtmain library.
The latest Qt documentation only says
this about it:

--------------- The qtmain Library

qtmain is a helper library that
enables the developer to write a
cross-platform main() function on
Windows and on the Symbian platform.
If you do not use qmake or other build
tools such as CMake, then you need to
link against theqtmain library.


It may not be related, but I think
that once I added it to the link, the
bogus console disappeared for our Qt
gui applications.

This may be another way to solve the problem, for example, when program is compiled with other tools than GCC + MinGW.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文