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

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

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 的电脑上正常运行,无需用户额外安装运行库。


相关文章

VS打开Qt的ui界面几秒后闪退(ui无法打开文件)的解决办法

VS打开Qt的ui界面几秒后闪退(ui无法打开文件)的解决办法

VS打开Qt的ui界面几秒后闪退(ui无法打开文件)的解决办法.VS打开Qt的ui界面几秒后闪退(ui无法打开文件)的解决办法问题:近两天在vs中直接点解ui界面,自动调用Qt Designer打开界面几秒后Designer界面闪退,回到vs界面,并有“——.ui无法打开文件”的错误提示。这个问题应该是Windows或Qt哪些东西更新造成的,用Qt的几个同学都有反应这个问题。解决方法:注:软件版本:VS2022 + Qt6方法一(评论区网友提供,操作比较简单,可以优先一试):选择“扩展->QT VS Tools->Options”,对话框中左侧选择“Qt->General”,右侧选择“Qt Designer->Run in detached window”选项值设为true 即可解决。...

uniapp开发抖音小程序监听键盘弹起keyboardheightchange,并获取键盘高度

uniapp开发抖音小程序监听键盘弹起keyboardheightchange,并获取键盘高度

今天用 Uniapp 开发抖音小程序,有个核心需求:点击输入框时,键盘弹起后能自动 “顶起” 输入框,避免输入框被键盘遮挡。这就需要实时监听到键盘高度,再把高度设给输入框的样式 —— 说起来简单,实操时却踩了不少坑。一开始想当然用了 Uniapp 的onKeyBoardHeightChange API,结果在抖音端根本没反应。查了下才知道,抖音小程序压根不支持这个接口,白忙活一场。接着问 AI,得到的答案翻来覆去还是叫我用onKeyBoardHeightChange,看来它也没吃透抖音的特性。没办法,只能自己啃抖音小程序文档,还真发现 input 组件有个bindkeyboardheightchange事件,专门用来监听键盘高度变化 —— 本以为找到救星,结果直接用上去,事件死活不触发,又卡壳了。那阵子真有点想放弃,去 GitHub 和 Uniapp 插件市场翻了个遍,也没找到能直接获取抖音键盘高度的第三方库。最后抱着死马当活马医的心态,试了试在绑定bindkeyboardheightchange时,配合this.$nextTick延迟初始化 —— 没想到,成了!关键代码(templa...

发表评论

访客

看不清,换一张

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