简短的回答是包含 Qt testlib 会导致控制台出现。删除它使它消失。
为了进一步解释,如果您的 .pro 文件将 testlib 添加到 QT,例如
QT += sql \
webkit \
network \
testlib
然后使用这样的行执行最后的链接步骤
g++ -enable-stdcall-fixup
-Wl,-enable-auto-import
-Wl,-enable-runtime-pseudo-reloc
-mthreads
-Wl
-Wl,-subsystem,console
-o debug\MyApp.exe object_script.MyApp.Debug
-L"c:\Qt\2009.01\qt\lib"
-lglu32 -lgdi32 -luser32 -lQtWebKitd4 -lQtTestd4
-lQtSqld4 -lQtGuid4 -lQtNetworkd4 -lQtCored
我们已经使用控制台子系统了!我认为使用 testlib 会强制发生这种情况,以便测试输出有去处。
如果我们现在编辑 .pro 文件并删除对 testlib 的引用并重新构建,我们会得到一个像这样的链接步骤
g++ -enable-stdcall-fixup
-Wl,-enable-auto-import
-Wl,-enable-runtime-pseudo-reloc
-mthreads
-Wl
-Wl,-subsystem,windows
-o debug\Ammotin.exe object_script.Ammotin.Debug
-L"c:\Qt\2009.01\qt\lib"
-lglu32 -lgdi32 -luser32 -lmingw32 -lqtmaind -lQtWebKitd4
-lQtSqld4 -lQtGuid4 -lQtNetworkd4 -lQtCored4
耶!子系统是窗口,不再是控制台窗口。