【问题标题】:Creating windwows Qt app that does not launch cmd window创建不启动 cmd 窗口的 Windows Qt 应用程序
【发布时间】:2019-10-08 16:20:27
【问题描述】:

我有一个跨平台的app(这是一个使用 Qt 绘制的基本椭圆体示例)。它可以编译,我可以在命令提示符下执行它。对于 linux,我知道如何创建一个 .desktop 文件,这样我就可以启动在启动时不显示终端的应用程序。但是在 Windows 上,当我在资源管理器中双击 exe 文件时,它不仅会启动我编写的 Qt gui,而且还会显示一个 cmd 窗口。当我在资源管理器上双击它时,Windows 中有没有办法阻止应用程序打开这个 cmd 窗口?

在 Windows 中,我使用 cmake-gui 设置项目,然后打开生成的 Visual Studio 解决方案并使用 microsoft Visual Studio 2019 进行编译

【问题讨论】:

  • MSVC 中应该有一个编译器标志。类似于应用程序类型,您可以在其中选择控制台应用程序和 GUI 应用程序(后者有另一个名称,但不记得了)。您是否尝试过使用WinMain 函数而不是标准的main 函数?我通常不鼓励这样做(首先尝试 MSVC 项目设置),因为它是非标准,但如果它对你有用...
  • set_target_properties(your_executable_target PROPERTIES WIN32_EXECUTABLE TRUE) 是 CMake 中选择 WinMain 函数而不是 main 函数作为入口点的命令。
  • 这是一个在 unix 中也能正常表现的属性吗?我正在开发的真正应用程序必须是跨平台的。
  • 是的,我认为是的。该文档没有另外说明它的使用仅限于 Windows。

标签: c++ windows visual-studio qt cmake


【解决方案1】:

我已经用这个previous post 提示解决了这个问题。我在创建 main 的最终 cpp 文件中添加了一些行已修改为:

//... all includes and other things previous to main function
#ifdef _WIN32
  #pragma comment(linker, "/SUBSYSTEM:windows /ENTRY:mainCRTStartup")
#endif
int main(int argc, char** argv)
{//... rest of code

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-25
    • 1970-01-01
    • 2010-11-09
    • 1970-01-01
    • 2017-03-23
    • 2016-04-23
    • 1970-01-01
    • 2017-08-16
    相关资源
    最近更新 更多