【问题标题】:How to make Qt static build run without install vc_redist.x64.exe如何在不安装 vc_redist.x64.exe 的情况下运行 Qt 静态构建
【发布时间】:2018-07-11 06:28:30
【问题描述】:

我想使用 MSVC2015 构建 Qt 5.10.1,并且不使用 MSVC 运行时。 已关注http://amin-ahmadi.com/2016/09/22/how-to-build-qt-5-7-statically-using-msvc14-microsoft-visual-studio-2015/

  1. 配置:

配置 -static -debug-and-release -prefix “C:\Qt\5.10.1-static-msvc2015”-平台 win32-msvc2015 -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype -opengl 桌面 -sql-sqlite -sql-odbc -no-openssl -opensource -confirm-license -make libs -nomake 工具 -nomake 示例 -nomake 测试

  1. 修改src\qtbase\mkspecs\common\msvc-desktop.conf-MD改为-MT

在构建过程中没有错误,但是如果我在运行程序时不安装 MSVC 运行时会得到:

api-ms-win-crt-runtime-l1-1-0.dll 不见了。

如何让 MSVC 像 Mingw 静态构建一样静态独立?

编译测试程序的输出:

cl -c -nologo -Zc:wchar_t -FS -Zc:rvalueCast -Zc:inline -zc:strictStrings -zc:throwingNew -02 -MT-W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -wd4467 -EHsc -DUNICODE -D_UNICODE -DWIN32 -DQT_DEPRECATED_WARNINGS -DQT_NO_DEBUG -DQT_QUICK_LIB -DQT_MULTIMEDIA_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DNDEBUG

如果我不执行第 2 步,输出将是 -MD

那么为什么-MT(第 2 步)不起作用?

如果您有任何想法或猜测,请发表评论。

更新:

  1. Win10 64

不管我加不加-static-runtime,不加vc_redist都可以运行

  1. 赢 7 32

Qt 5.10.1 编译通过,但在执行程序时得到api-ms-win-core-winrt-l1-1-0.dll is missing

即使我重新安装vc_redist 仍然出现错误...

相关:Why installed vc_redist still gives api-ms-win-core-winrt-l1-1-0.dll is missing

Qt 5.11.1 编译也通过了,但是在构建程序的时候得到了C1083: 'QtCore/qglobal.h':No such file or directory

【问题讨论】:

    标签: qt visual-c++ compilation


    【解决方案1】:

    从 Qt 5.5.0 编译 Qt 源代码,您可以传递 -static-runtime 参数来配置静态运行时。

    Changes 5.5.0:

    [Windows] 添加 -static-runtime 选项。

    Config Options:

    -static-runtime ...... 与 -static 一起使用静态运行时 [否](仅限 Windows)

    【讨论】:

    • 我还需要更改-MT吗?
    • 感谢 Qt 开发人员的辛勤工作,您不再需要做任何 hack 来让静态 CRT 工作!新的 -static-runtime 选项自动将构建配置为使用静态 CRT 的适当标志,例如/MT 和/或 /MTd。 github.com/alberthdev/alberthdev-misc/wiki/…
    • 我添加了有关此选项以及何时引入的其他详细信息。
    • 出现未解决的符号错误,看来我需要先nmake clean
    • C1083: 'QtCore/qglobal.h':No such file or directory 对此有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-09
    • 1970-01-01
    • 1970-01-01
    • 2023-01-25
    • 2010-10-05
    • 1970-01-01
    相关资源
    最近更新 更多