首页 > 解决方案 > 如何在不安装 vc_redist.x64.exe 的情况下运行 Qt 静态构建

问题描述

我想使用 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" -platform win32-msvc2015 -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype -opengl 桌面 -sql-sqlite -sql-odbc -no-openssl -opensource -confirm-license -make 库 -nomake 工具 -nomake 示例 -nomake 测试

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

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

api-ms-win-crt-runtime-l1-1-0.dll失踪。

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

编译测试程序的输出:

cl -c -nologo -Zc:wchar_t -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -O2 -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. 赢10 64

无论我添加-static-runtime与否,两者都可以运行 withoutvc_redist

  1. 赢 7 32

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

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

相关:为什么安装的 vc_redist 仍然给出 api-ms-win-core-winrt-l1-1-0.dll 丢失

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

标签: qtvisual-c++compilation

解决方案


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

更改 5.5.0:

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

配置选项:

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


推荐阅读