我有一个Qt应用程序,当我运行这个应用程序时,它后面有一个控制台。在开发中它很好,因为我在控制台上看到调试输出,但是当我想将这个可执行文件提供给客户时,应该没有控制台窗口。 我怎么隐藏它?
(我使用的是Visual Studio 2008)
答案 0 :(得分:99)
在项目构建链接器选项集
中/SUBSYSTEM:windows
/ENTRY:mainCRTStartup
或者使用int main(...)
#pragma comment(linker, "/SUBSYSTEM:windows /ENTRY:mainCRTStartup")
答案 1 :(得分:50)
听起来您的链接器配置不正确。右键单击项目,“属性”,“链接器”,“系统”,“子系统”设置。确保选择“Windows”,而不是“控制台”。
然后,将main()更改为WinMain()。
答案 2 :(得分:16)
您可以通过致电:
来摆脱控制台FreeConsole();
答案 3 :(得分:12)
我使用那种方法并且有效
HWND hwnd = GetConsoleWindow();
ShowWindow(hwnd, 0);
答案 4 :(得分:7)
下一个解决方案;)
环境:WixXP x64,msvs 2008,Qt v4.5.3
设置项目设置/配置属性/链接器/系统/子系统= Windows(/ SUBSYSTEM:WINDOWS)
但是对于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平台。
答案 5 :(得分:5)
可能是更好的选择,不是简单地删除(如Andy M建议的那样),而是编辑* .pro文件,添加类似
的内容CONFIG(debug, debug|release) {
CONFIG *= console
}
else {
CONFIG -= console
}
在调试中,您可以看到控制台窗口,但不能在发布中看到。我喜欢。 =)
答案 6 :(得分:5)
如果您使用属性 - > 链接器 - > 系统 - > 子系统 |的视窗强>
并收到链接器错误。
您可以查看链接器 - > 高级 - > 入口点
并将值设置为" main"的名称。功能
如果你的主要功能是"主要"那么你的入口点就变成了主要的。
答案 7 :(得分:4)
我建议检查.PRO文件中是否存在以下行:
CONFIG += console
如果可以找到它,请将其删除!它应该解决你的问题!
希望它有所帮助!
答案 8 :(得分:0)
对于那些直接编辑.vcxproj的人,您希望向SubSystem
Windows
添加值为Link
的{{1}},如下所示:
ItemDefinitionGroup
答案 9 :(得分:0)
转到:Projects --> Run
并取消选中Run in terminal
复选框
答案 10 :(得分:0)
步骤1:-设置“属性”->“链接器”->“系统”->“子系统”为“ Windows(/ SUBSYSTEM:WINDOWS)”
步骤2:-链接器->高级->入口点“主”
答案 11 :(得分:-2)
这对我有用:
CONFIG(debug, debug|release) {
CONFIG *= console
}
else {
CONFIG -= console
}
我需要使用QFileSystemWatcher
来运行exe来监控文件,所以我使用了这个:
CONFIG -= console