如何设置C++ redistributables的依赖版本,适配新版运行环境
修复DLL依赖旧版C++运行库问题步骤
1. 确认依赖项
打开Visual Studio 2019开发人员命令提示符,执行以下命令查看DLL的依赖:dumpbin /dependents 你的DLL完整路径
如果输出结果中包含msvcr100.dll/msvcp100.dll,即可确认DLL确实依赖VC++ 2010运行库。
2. 修改项目运行时配置
打开项目属性页,按以下路径修改配置,注意先将顶部「配置」选为所有配置,「平台」选为你发布对应的架构(x86/x64):
- 路径:配置属性 → 常规 → 平台工具集,确认选中v142(Visual Studio 2019),而非旧版的v100(VC++2010工具集)
- 路径:配置属性 → C/C++ → 代码生成 → 运行库,选择多线程 DLL (/MD)(发布版)或多线程调试 DLL (/MDd)(调试版),不要选择绑定旧运行库的版本
- 路径:配置属性 → 链接器 → 输入 → 附加依赖项,检查是否手动添加了
msvcr100.lib/msvcp100.lib等2010版本的库文件,如有则删除
3. 清理旧编译缓存与升级遗留项
- 右键项目 → 清理,删除所有旧编译生成的obj、lib、dll文件
- 如仍存在旧依赖,可直接用文本编辑器打开项目的
.vcxproj文件,全局搜索PlatformToolset、RuntimeLibrary字段,确认所有节点的取值都对应v142工具集,无v100相关的配置残留 - 若项目依赖第三方静态库,需确认所有依赖库也使用VS2019 v142工具集编译,否则第三方库本身携带的2010运行时依赖仍会导致问题
4. 验证修复效果
重新编译生成DLL后,再次用dumpbin /dependents命令检查依赖,确认仅出现msvcp140.dll、vcruntime140.dll、ucrtbase.dll等属于VC2015-2022运行库的文件,此时生成的DLL即可在仅安装2015-2019 C redistributables的设备上正常注册。
内容的提问来源于stack exchange,提问作者Amber
相关产品推荐
相关产品推荐

