隐藏Windows应用程序的控制台

时间:2010-01-26 13:33:54

标签: windows visual-studio qt console hide

我有一个Qt应用程序,当我运行这个应用程序时,它后面有一个控制台。在开发中它很好,因为我在控制台上看到调试输出,但是当我想将这个可执行文件提供给客户时,应该没有控制台窗口。 我怎么隐藏它?

(我使用的是Visual Studio 2008)

12 个答案:

答案 0 :(得分:99)

在项目构建链接器选项集

/SUBSYSTEM:windows
/ENTRY:mainCRTStartup

或者使用int main(...)

在源文件中使用以下 #pragma
#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

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

    但是对于x64,存在链接器错误: LNK2019:函数_WinMainCRTStartup中引用了未解析的外部符号_WinMain“ 为了避免它

  2. 替换以下代码:

    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 );
     }
    
  3. 它适用于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