隐藏Windows应用程序的控制台

我有一个Qt应用程序,当我运行这个应用程序,有一个控制台后面打开。 在开发中,它是很好,因为我看到在控制台上的debugging输出,但是当我想给这个客户可执行文件应该没有控制台窗口。 我如何隐藏它?

(我正在使用Visual Studio 2008)

这听起来像你的链接器configuration是不正确的。 右键单击项目,属性,链接器,系统,子系统设置。 确保select了“Windows”,而不是“控制台”。

并且,将main()更改为WinMain()。

在项目构build链接器选项集中

 /SUBSYSTEM:windows /ENTRY:mainCRTStartup 

或者在源文件中使用下面的#pragmaint main(...)

 #pragma comment(linker, "/SUBSYSTEM:windows /ENTRY:mainCRTStartup") 

你可以通过调用来摆脱控制台:

 FreeConsole(); 

我使用该方法,它的工作

 HWND hwnd = GetConsoleWindow(); ShowWindow(hwnd, 0); 

下个解决scheme;)

Env:WixXP x64,msvs 2008,Qt v4.5.3

  1. 设置项目设置/configuration属性/链接器/系统/子系统= Windows(/ SUBSYSTEM:WINDOWS)

    但对于x64有链接器错误:LNK2019:无法parsing的外部符号_WinMain在函数_WinMainCRTStartup中引用“为了避免它

  2. replace下面的代码:

     int main(int argc, char *argv[]) { QApplication app(argc, argv); // your code* } 

    通过

     int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, char*, int nShowCmd) { int argc = 0; QApplication app( argc, 0 ); } 

它适用于Win32和x64平台。

可能是更好的select将不会简单地删除(如安迪Mbuild议),但编辑* .pro文件添加类似

 CONFIG(debug, debug|release) { CONFIG *= console } else { CONFIG -= console } 

在debugging中,您可以看到控制台窗口,但不在发布。 我喜欢。 =)

我会build议检查您的.PRO文件中的以下行的存在:

 CONFIG += console 

如果你能find它,把它删除! 它应该解决你的问题!

希望它有帮助!

如果使用属性 – >连接器 – >系统 – >子系统| 视窗

并得到一个链接器错误。

你可以看看链接器 – >高级 – >入口点

并将该值设置为您的“主”function的名称。

如果你的主要function是“主要”,那么这就是你的入口点。

对于那些直接编辑.vcxproj的用户,您希望将具有Windows值的SubSystem添加到您的Link ItemDefinitionGroup ,如下所示:

 <ItemDefinitionGroup> <Link> <SubSystem>Windows</SubSystem> </Link> </ItemDefinitionGroup> 

转到: Projects --> Run并取消选中Run in terminalcheckbox

这对我工作:

 CONFIG(debug, debug|release) { CONFIG *= console } else { CONFIG -= console } 

我需要运行一个exe来监视使用QFileSystemWatcher的文件,所以我用这个:

 CONFIG -= console