news 2026/4/23 17:49:26

Qt + VS2017 编译缺少库,在对方设备无法运行,推荐几种做法。

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Qt + VS2017 编译缺少库,在对方设备无法运行,推荐几种做法。

如果你的代码使用了 Visual C++ 运行时库(如 msvcp140.dll、vcruntime140.dll、ucrtbase.dll 等),而目标工控机(工业控制计算机)上没有安装对应的运行时环境,那么你的程序在工控机上将无法启动,通常会弹出类似以下错误:
❌ “无法启动此程序,因为计算机中丢失 VCRUNTIME140.dll。”
❌ “由于找不到 MSVCP140.dll,无法继续执行代码。”

✅ 解决方案(按推荐顺序)
✅ 方案一:【推荐】在工控机上安装官方 Visual C++ Redistributable

这是最标准、最安全、最可靠的方式。
步骤:

  1. 根据你的编译器版本下载对应 Redistributable:
    你用的是 Qt 5.12.9 + MSVC2017 → 对应 Visual C++ 2015–2019 Redistributable
  2. 下载地址(微软官方):
    x64 版本(64位系统):
    https://aka.ms/vs/17/release/vc_redist.x64.exe
    x86 版本(32位程序或系统):
    https://aka.ms/vs/17/release/vc_redist.x86.exe
  3. 将安装包拷贝到工控机,以管理员身份运行并安装
  4. 重启(通常不需要,但建议)
    ✅ 优点:系统级安装,所有程序共享,自动更新,无兼容问题
    ⚠️ 注意:工控机可能无网络,需提前下载好离线安装包

✅ 方案二:【次选】将所需 DLL 随程序一起部署(“私有部署”)

如果无法安装 Redistributable(如权限受限、系统锁定),可将运行时 DLL 放在你的 .exe 同目录下。
需要复制的文件(MSVC2017 / v141 工具集):

your_app.exe
├── msvcp140.dll
├── vcruntime140.dll
├── vcruntime140_1.dll (如果用了 C++17/20 新特性)
├── ucrtbase.dll (Universal CRT)
└── concrt140.dll (如果用了并发运行时,如 ppl.h)
如何获取这些 DLL?
路径通常在:

C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Redist\MSVC<版本号>\x64\

C:\Windows\System32\ (但不建议直接从这里拷,可能版本不对)
⚠️ 重要法律与技术限制:
微软允许你随应用程序分发 Redistributable DLL,但必须来自官方 Redist 目录(不能从 System32 拷贝!)
必须遵守 Microsoft Visual C++ 分发许可
ucrtbase.dll 属于 Universal CRT,Windows 10 自带;但在 Windows 7/8 上需额外安装 KB2999226 更新或通过 Redist 安装
推荐做法:
使用 Qt 的 windeployqt 工具,它会自动复制 Qt 依赖,但不会复制 VC++ 运行时。你需要手动补充。

❌ 不推荐的做法:
直接从开发机 System32 拷贝 DLL 到工控机 → 可能版本不匹配、缺少依赖、违反许可
修改程序为静态链接(见下文)→ 有局限性

✅ 方案三:【高级】改用静态链接(/MT)

在编译时将 C/C++ 运行时静态链接进你的 .exe,这样就不依赖外部 DLL。
如何设置(Qt + MSVC):
在 .pro 文件中添加:
qmake

QMAKE_CXXFLAGS_RELEASE += /MT QMAKE_CXXFLAGS_DEBUG += /MTd

/MT:Release 静态链接多线程运行时
/MTd:Debug 静态链接(仅用于调试)
优点:
无需任何 VC++ Redistributable
程序完全独立
缺点:
EXE 体积增大(+1~2MB)
无法接收微软对运行时的安全更新
如果你的程序是 DLL 插件,且主程序用动态链接(/MD),会导致冲突(混合模式问题)
Qt 官方预编译库是 /MD 动态链接 的,你若用 /MT 静态链接,必须自己重新编译整个 Qt
🚫 因此:除非你完全控制整个软件栈,否则不建议对 Qt 程序使用 /MT

🔧 工控机部署检查清单

💡 强烈建议:即使工控机封闭,也尽量说服客户允许安装官方 Redistributable —— 这是微软支持的标准做法,长期维护成本最低。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 9:44:28

pyvideotrans视频翻译神器:从入门到精通的完整实战指南

pyvideotrans视频翻译神器&#xff1a;从入门到精通的完整实战指南 【免费下载链接】pyvideotrans Translate the video from one language to another and add dubbing. 将视频从一种语言翻译为另一种语言&#xff0c;并添加配音 项目地址: https://gitcode.com/gh_mirrors/…

作者头像 李华
网站建设 2026/4/23 9:45:57

基于web的餐厅预订系统的设计与实现-任务书(软工)

2025届毕业论文&#xff08;设计&#xff09;任务书论文&#xff08;设计&#xff09;题目 基于web的餐厅预订系统的设计与实现 学生姓名 学院 专业 班级 班 指导教师情况题目来源姓名职称单位实 验 □实 习 □工程实践 R社会调查 □…

作者头像 李华
网站建设 2026/4/23 9:45:35

React数据表格的交互设计艺术:从静态展示到动态操控

React数据表格的交互设计艺术&#xff1a;从静态展示到动态操控 【免费下载链接】ant-design An enterprise-class UI design language and React UI library 项目地址: https://gitcode.com/gh_mirrors/antde/ant-design 在数据驱动的现代应用中&#xff0c;如何让海量…

作者头像 李华
网站建设 2026/4/22 22:59:54

UI-TARS智能体:重新定义人机交互的下一代GUI自动化革命

UI-TARS智能体&#xff1a;重新定义人机交互的下一代GUI自动化革命 【免费下载链接】UI-TARS-72B-DPO 项目地址: https://ai.gitcode.com/hf_mirrors/ByteDance-Seed/UI-TARS-72B-DPO 当AI学会"看屏幕"并自主操作界面时&#xff0c;传统的人机交互模式正在被…

作者头像 李华
网站建设 2026/4/23 9:44:29

如何快速解决XAPK安装问题:小白也能懂的完整转换指南

如何快速解决XAPK安装问题&#xff1a;小白也能懂的完整转换指南 【免费下载链接】xapk-to-apk A simple standalone python script that converts .xapk file into a normal universal .apk file 项目地址: https://gitcode.com/gh_mirrors/xa/xapk-to-apk 你是否曾经兴…

作者头像 李华
网站建设 2026/4/23 9:45:23

15、高级psad主题:从签名匹配到操作系统指纹识别

高级psad主题:从签名匹配到操作系统指纹识别 在网络安全领域,psad是一款强大的工具,它在检测和防范各种网络攻击方面发挥着重要作用。本文将深入探讨psad的高级主题,包括签名匹配和操作系统指纹识别。 1. psad_ip_len关键字 psad_ip_len关键字用于指定iptables日志消息中…

作者头像 李华