我有一个Qt应用程序,当我运行这个应用程序时,它背后有一个控制台 . 在开发中它很好,因为我在控制台上看到调试输出,但是当我想将这个可执行文件提供给客户时,应该没有控制台窗口 . 我怎么隐藏它?
(我使用的是Visual Studio 2008)
听起来您的链接器配置不正确 . 右键单击项目,“属性”,“链接器”,“系统”,“子系统”设置 . 确保选中“Windows”,而不是“控制台” .
并且,将main()更改为WinMain() .
在项目构建链接器选项集中
/SUBSYSTEM:windows /ENTRY:mainCRTStartup
或者使用 int main(...) 在源文件中使用以下#pragma
int main(...)
#pragma comment(linker, "/SUBSYSTEM:windows /ENTRY:mainCRTStartup")
你可以通过调用以删除控制台:
FreeConsole();
我使用那种方法,它的工作原理
HWND hwnd = GetConsoleWindow(); ShowWindow(hwnd, 0);
下一个解决方案;
环境:WixXP x64,msvs 2008,Qt v4.5.3
但是对于x64,存在链接器错误:LNK2019:函数_WinMainCRTStartup中引用的未解析的外部符号_WinMain“为了避免它
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平台 .
可能是更好的选择,不是简单地删除(如Andy M建议)但编辑* .pro文件添加类似的东西
CONFIG(debug, debug|release) { CONFIG *= console } else { CONFIG -= console }
在调试中,您可以看到控制台窗口,但不能发布 . 我喜欢 . =)
如果您使用 Properties - > Linker - > System - > SubSystem | Windows
并获得链接器错误 .
你可以看 Linker - > Advanced - > Entry Point
并将值设置为“main”函数的名称 .
如果您的主要功能是“主要”,那么您的入口点将成为主要部分 .
我建议检查.PRO文件中是否存在以下行:
CONFIG += console
如果您能找到它,请将其删除!它应该解决你的问题!
希望能帮助到你 !
对于那些直接编辑.vcxproj的人,您希望将 SubSystem 的值 Windows 添加到 Link ItemDefinitionGroup ,如下所示:
SubSystem
Windows
Link
ItemDefinitionGroup
<ItemDefinitionGroup> <Link> <SubSystem>Windows</SubSystem> </Link> </ItemDefinitionGroup>
转到: Projects --> Run 并取消选中 Run in terminal 复选框
Projects --> Run
Run in terminal
这对我有用:
我需要使用 QFileSystemWatcher 来运行exe来监视文件,所以我使用了这个:
QFileSystemWatcher
CONFIG -= console
11 回答
听起来您的链接器配置不正确 . 右键单击项目,“属性”,“链接器”,“系统”,“子系统”设置 . 确保选中“Windows”,而不是“控制台” .
并且,将main()更改为WinMain() .
在项目构建链接器选项集中
或者使用
int main(...)
在源文件中使用以下#pragma你可以通过调用以删除控制台:
我使用那种方法,它的工作原理
下一个解决方案;
环境:WixXP x64,msvs 2008,Qt v4.5.3
但是对于x64,存在链接器错误:LNK2019:函数_WinMainCRTStartup中引用的未解析的外部符号_WinMain“为了避免它
通过
它适用于两者 - Win32和x64平台 .
可能是更好的选择,不是简单地删除(如Andy M建议)但编辑* .pro文件添加类似的东西
在调试中,您可以看到控制台窗口,但不能发布 . 我喜欢 . =)
如果您使用 Properties - > Linker - > System - > SubSystem | Windows
并获得链接器错误 .
你可以看 Linker - > Advanced - > Entry Point
并将值设置为“main”函数的名称 .
如果您的主要功能是“主要”,那么您的入口点将成为主要部分 .
我建议检查.PRO文件中是否存在以下行:
如果您能找到它,请将其删除!它应该解决你的问题!
希望能帮助到你 !
对于那些直接编辑.vcxproj的人,您希望将
SubSystem
的值Windows
添加到Link
ItemDefinitionGroup
,如下所示:转到:
Projects --> Run
并取消选中Run in terminal
复选框这对我有用:
我需要使用
QFileSystemWatcher
来运行exe来监视文件,所以我使用了这个: