隐藏Windows应用程序的控制台
我有一个Qt应用程序,当我运行这个应用程序,有一个控制台后面打开。 在开发中,它是很好,因为我看到在控制台上的debugging输出,但是当我想给这个客户可执行文件应该没有控制台窗口。 我如何隐藏它?
(我正在使用Visual Studio 2008)
这听起来像你的链接器configuration是不正确的。 右键单击项目,属性,链接器,系统,子系统设置。 确保select了“Windows”,而不是“控制台”。
并且,将main()更改为WinMain()。
在项目构build链接器选项集中
/SUBSYSTEM:windows /ENTRY:mainCRTStartup
或者在源文件中使用下面的#pragma和int 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
-
设置项目设置/configuration属性/链接器/系统/子系统= Windows(/ SUBSYSTEM:WINDOWS)
但对于x64有链接器错误:LNK2019:无法parsing的外部符号_WinMain在函数_WinMainCRTStartup中引用“为了避免它
-
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 terminal
checkbox
这对我工作:
CONFIG(debug, debug|release) { CONFIG *= console } else { CONFIG -= console }
我需要运行一个exe来监视使用QFileSystemWatcher
的文件,所以我用这个:
CONFIG -= console