首页 文章

隐藏Windows应用程序的控制台

提问于
浏览
46

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

(我使用的是Visual Studio 2008)

11 回答

  • 15

    听起来您的链接器配置不正确 . 右键单击项目,“属性”,“链接器”,“系统”,“子系统”设置 . 确保选中“Windows”,而不是“控制台” .

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

  • 12

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

    /SUBSYSTEM:windows
    /ENTRY:mainCRTStartup
    

    或者使用 int main(...) 在源文件中使用以下#pragma

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

    你可以通过调用以删除控制台:

    FreeConsole();
    
  • 0

    我使用那种方法,它的工作原理

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

    下一个解决方案;

    环境: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平台 .

  • 50

    可能是更好的选择,不是简单地删除(如Andy M建议)但编辑* .pro文件添加类似的东西

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

    在调试中,您可以看到控制台窗口,但不能发布 . 我喜欢 . =)

  • 4

    如果您使用 Properties - > Linker - > System - > SubSystem | Windows

    并获得链接器错误 .

    你可以看 Linker - > Advanced - > Entry Point

    并将值设置为“main”函数的名称 .

    如果您的主要功能是“主要”,那么您的入口点将成为主要部分 .

  • 0

    我建议检查.PRO文件中是否存在以下行:

    CONFIG += console
    

    如果您能找到它,请将其删除!它应该解决你的问题!

    希望能帮助到你 !

  • 93

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

    <ItemDefinitionGroup>
      <Link>
        <SubSystem>Windows</SubSystem>
      </Link>
    </ItemDefinitionGroup>
    
  • 5

    转到: Projects --> Run 并取消选中 Run in terminal 复选框

  • -2

    这对我有用:

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

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

    CONFIG -= console
    

相关问题