代码之家  ›  专栏  ›  技术社区  ›  ufukgun

隐藏Windows应用程序的控制台

  •  46
  • ufukgun  · 技术社区  · 15 年前

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

    (我正在使用Visual Studio 2008)

    11 回复  |  直到 6 年前
        1
  •  49
  •   user366312    10 年前

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

    并将main()更改为winmain()。

        2
  •  92
  •   datenwolf    13 年前

    在项目生成链接器选项集中

    /SUBSYSTEM:windows
    /ENTRY:mainCRTStartup
    

    或使用以下内容 α语用 在源文件中, int main(...)

    #pragma comment(linker, "/SUBSYSTEM:windows /ENTRY:mainCRTStartup")
    
        3
  •  15
  •   Daniel Munoz    12 年前

    您可以通过调用以下命令来摆脱控制台:

    FreeConsole();
    
        4
  •  12
  •   ufukgun    15 年前

    我用那个方法,它奏效了

    HWND hwnd = GetConsoleWindow();
    ShowWindow(hwnd, 0);
    
        5
  •  7
  •   Rafał Rawicki    12 年前

    下一个解决方案;)

    环境:WIXXP X64,MSVs 2008,Qt v4.5.3

    1. 设置项目设置/配置属性/linker/system/subsystem=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 );
       }
      

    它对Win32和X64平台都适用。

        6
  •  5
  •   Wildcat    15 年前

    也许更好的选择不是简单地删除(如andy m建议的那样),而是编辑*.pro文件,添加如下内容

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

    在调试中,您可以看到控制台窗口,但不能在版本中看到。我喜欢它。=)

        7
  •  5
  •   msc    6 年前

    如果你使用 性质 -gt; 链接器 -gt; 系统 -gt; 子系统 γ 窗户

    得到一个链接器错误。

    你可以看看 链接器 -gt; 先进的 -gt; 入口点

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

    如果你的主要功能是一个“主功能”,那就是你的入口。

        8
  •  4
  •   Andy M    15 年前

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

    CONFIG += console
    

    如果你能找到它,就把它移走!它应该能解决你的问题!

    希望它有帮助!

        9
  •  0
  •   Dogmatixed    11 年前

    对于直接编辑.vcxproj的用户,您希望添加 SubSystem 用价值 Windows 给你的 Link ItemDefinitionGroup 如下:

    <ItemDefinitionGroup>
      <Link>
        <SubSystem>Windows</SubSystem>
      </Link>
    </ItemDefinitionGroup>
    
        10
  •  0
  •   Artem Zaytsev    10 年前

    去: Projects --> Run 不检查 Run in terminal 复选框

        11
  •  -2
  •   Luka Kerr Max Dercum    8 年前

    这对我很有用:

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

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

    CONFIG -= console