我有一个Qt应用程序,当我运行它时,会在其后面打开一个控制台窗口。在开发过程中,这很好,因为我可以在控制台上看到调试输出,但是当我想将可执行文件交给客户时,就不应该有控制台窗口。
我该如何隐藏它?
(我正在使用Visual Studio 2008)
我有一个Qt应用程序,当我运行它时,会在其后面打开一个控制台窗口。在开发过程中,这很好,因为我可以在控制台上看到调试输出,但是当我想将可执行文件交给客户时,就不应该有控制台窗口。
我该如何隐藏它?
(我正在使用Visual Studio 2008)
/SUBSYSTEM:windows
/ENTRY:mainCRTStartup
或者在带有int main(...)
的源文件中使用以下的#pragma
#pragma comment(linker, "/SUBSYSTEM:windows /ENTRY:mainCRTStartup")
听起来你的链接器配置不正确。右键单击项目,属性,链接器,系统,子系统设置。确保选择了“Windows”,而不是“控制台”。
同时,将main()更改为WinMain()。
main()
。 - Jan TuroňWindows
中运行程序时,即使我解决了main
/WinMain
的问题,它仍然无法终止。 - Tomáš Zato调用以下代码可以去掉控制台:
FreeConsole();
#include <Windows.h>
来实现这个。 - Superior我使用了该方法,它起作用了。
HWND hwnd = GetConsoleWindow();
ShowWindow(hwnd, 0);
FreeConsole
不会出现这个问题。 - nwpSet Projects settings/Configuration properties/Linker/System/SubSystem = Windows (/SUBSYSTEM:WINDOWS)
But For x64 there is linker error: LNK2019: unresolved external symbol _WinMain referenced in function _WinMainCRTStartup" To avoid it
Replace the following code:
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
// your code*
}
by
int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, char*, int nShowCmd)
{
int argc = 0;
QApplication app( argc, 0 );
}
它在Win32和x64平台上都可以正常运行。
CONFIG(debug, debug|release) {
CONFIG *= console
}
else {
CONFIG -= console
}
在调试模式下你可以看到控制台窗口,但在发布模式下却看不到。我喜欢这样。=)
CONFIG += console
如果您直接编辑.vcxproj文件,您需要在 中添加一个值为Windows
的SubSystem
,具体如下:
<ItemDefinitionGroup>
<Link>
<SubSystem>Windows</SubSystem>
</Link>
</ItemDefinitionGroup>
步骤1:设置属性 -> 链接器 -> 系统 -> 子系统为“Windows (/SUBSYSTEM:WINDOWS)”
步骤2:链接器 -> 高级 -> 入口点为“main”