我正在部署我用 Qt 构建的东西,它是动态链接的,因为 LGPL。我使用 windeployqt.exe
收集必要的 dll,它在 Windows 10 机器上运行良好。当我在 Windows 7 机器上尝试时,出现了这个错误:
The program can't start because MSVCP140.dll is missing from your computer.
经过一番研究,发现 MSVCP140.dll
是 Visual Studio 安装的 System 32
中的一个 dll。我应该让我的客户安装 Visual Studio,这对我来说不是一个选项,或者静态链接它。我尝试使用 /MT
但我得到了:
Overriding /MT with /MD
大概是因为我不能在不静态编译 Qt 本身的情况下静态链接 Qt 库。
由于 LGPL,我想要做的是动态链接 Qt 库,并静态链接 MSVC 库。有没有办法做到这一点?最好来自 Qt 创建者。
我认为在程序中包含 MSVCP140.dll
不是一个选项。
我正在使用 Visual Studio 2019 和 Qt 13.1
最佳答案
为了使目标计算机运行使用 Visual Studio 2015 或更高版本构建的软件,您需要在其上安装最新的 MSVC 运行时可再发行组件包。一些系统(例如 Windows 10)已经有足够新的版本。
您可以从这里获取最新的包:vc_redist.XXX.exe,具体取决于目标平台。
选择“静态链接”选项仅适用于 MFC 库。
Stack Overflow 上有一个旧的 - 但可能很有帮助 - 问答 here。
关于c++ - 静态链接MSVC库,动态链接Qt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57891204/