当前位置:首页 > 开发笔记 > 正文内容

VS2022 编译的程序依赖的 VC 运行库 DLL 怎么手动提取随程序打包这样让没有安装的电脑也能运行?

jiaweisi1个月前 (10-30)开发笔记78

VS2022 编译的程序依赖的 VC 运行库 DLL 怎么手动提取随程序打包这样让没有安装的电脑也能运行?



在 VS2022 中手动提取并打包程序依赖的 VC 运行库 DLL,让未安装 vc_redist.x64.exe 的电脑也能运行程序,可按以下 4 个步骤 操作,每一步都有明确的操作指引:

步骤 1:确定程序依赖的 VC 运行库 DLL(关键!避免盲目复制)

首先需要明确你的程序具体依赖哪些 VC 运行库 DLL(不同程序依赖可能不同,比如是否包含 VCRUNTIME140_1.dll 等)。推荐用 VS 自带的 dumpbin 工具 精准查询:

操作步骤:

1、打开 VS2022 开发人员命令提示符:

按下 Win + S,搜索 “Developer Command Prompt for VS 2022”,右键 “以管理员身份运行”(确保权限足够)。


2、定位到你的程序 .exe 所在目录:用 cd 命令切换路径,例如:

cd C:\你的程序输出目录\Release  # 假设程序在 Release 文件夹下


3、执行命令查看依赖的 DLL:输入以下命令(将 你的程序名.exe 替换为实际的程序文件名):

dumpbin /dependents 你的程序名.exe


4、识别 VC 运行库 DLL:输出结果中,名称以 MSVCP140、VCRUNTIME140、CONCRT140 开头的 DLL 就是需要打包的 VC 运行库(其他 DLL 可能是 Qt 或系统自带的,暂不处理)。示例依赖(64 位程序常见):

MSVCP140.dll

VCRUNTIME140.dll

VCRUNTIME140_1.dll

CONCRT140.dll



步骤 2:找到这些 VC 运行库 DLL 的位置(确保版本匹配)

从你的开发机(已安装 VS2022)中找到步骤 1 识别的 DLL,优先从 VS 安装目录提取(版本与编译环境完全匹配,避免系统目录中可能存在的旧版本)。

常见路径(64 位程序):

VS2022 安装目录(推荐):

plaintext

C:\Program Files (x86)\Microsoft Visual Studio\2022\Community\VC\Redist\MSVC\14.38.33130\x64\Microsoft.VC143.CRT\

说明:14.38.33130 是版本号(你的 VS 版本可能不同,需替换为实际路径中的版本号,可在 MSVC 文件夹下找到最新的版本目录)。

该目录下的 DLL 是 VS2022 自带的,与你的编译环境完全匹配,最可靠。

系统目录(备用,若 VS 目录中找不到):64 位 DLL 在 C:\Windows\System32\(注意:64 位系统中 System32 存放 64 位文件,SysWOW64 存放 32 位文件)。

步骤 3:复制 DLL 到程序目录(与 .exe 同目录)

将步骤 2 找到的所有 VC 运行库 DLL(如 MSVCP140.dll 等)复制到你的程序 .exe 所在的文件夹,与 Qt 的 DLL(如 Qt6Core.dll、Qt6Widgets.dll 等)放在一起。

示例目录结构:

plaintext

你的程序文件夹/

├─ 你的程序名.exe          # 主程序

├─ MSVCP140.dll           # VC 运行库 DLL

├─ VCRUNTIME140.dll       # VC 运行库 DLL

├─ VCRUNTIME140_1.dll     # VC 运行库 DLL

├─ CONCRT140.dll          # VC 运行库 DLL

├─ Qt6Core.dll            # Qt 核心 DLL(通过 windeployqt 生成)

└─ ...(其他 Qt 依赖 DLL)

步骤 4:验证是否成功(在干净环境测试)

为确保打包有效,需在 未安装 vc_redist.x64.exe 的电脑 / 虚拟机 中测试:

将整个程序文件夹复制到目标电脑;

双击 .exe 运行,若能正常启动且无 “缺失 DLL” 错误,则成功;

若仍报错 “缺少 XXX.dll”,说明漏复制了依赖的 DLL,回到步骤 1 重新检查 dumpbin 输出,补充缺失的 DLL 即可。

关键注意事项

版本必须严格匹配:提取的 DLL 版本必须与你的 VS2022 版本一致(例如 VS2022 对应 VC143 版本,DLL 版本号需匹配),否则可能出现 “应用程序无法启动” 或运行时崩溃。

64 位 / 32 位不可混用:

若你的程序是 64 位编译(项目配置为 x64),必须提取 64 位 DLL(来自 x64 目录);

若为 32 位(x86),需提取 32 位 DLL(VS 目录中 x86 子文件夹,或系统 SysWOW64 目录)。

许可合规:微软允许随程序打包这些 DLL,但不可单独分发(必须与你的应用程序一起),需遵守 VC 运行库许可条款。

Qt 依赖仍需处理:此方法仅解决 VC 运行库依赖,Qt 本身的 DLL 需通过 windeployqt 工具生成(在 VS 命令提示符中执行 windeployqt 你的程序名.exe,会自动复制所需的 Qt DLL)。

通过以上步骤,即可手动打包 VC 运行库 DLL,让程序在未安装 vc_redist.x64.exe 的电脑上正常运行,无需用户额外安装运行库。


相关文章

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。