c++ - 静态链接MSVC库,动态链接Qt

标签 c++ windows visual-studio qt

我正在部署我用 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/

相关文章:

c++ - 重写虚函数仅通过调用约定有什么不同意味着什么?

c++ - OpenCV中基于光流的四边形点跟踪

Windows PowerShell 在命令 Enter-PSSession 中提供密码

windows - 如何在 Windows 上将 gpg-agent 作为服务运行?

c# - 术语 'add-migration' 未被识别为 cmdlet 的名称

C++ 标记强制保留参数为 nullptr

c++ - 从 C++ 中的函数返回数组

java - 有些jar文件是通过双击运行的,而有些则不是

visual-studio - 命令行参数

ios - 没有团队选择使用 VS Cordova 工具进行 iOS 构建