欢迎光临散文网 会员登陆 & 注册

找不到dll问题之第二课《Visual C++运行库篇》

2023-07-24 23:22 作者:鸟人飞飞  | 我要投稿

关于VC运行库网上很多一键修复工具,如:

  • DirectX Repair,缺点是很久没更新,不包含vc2015-2022新版;

  • 微软常用运行库合集,有很多人制作过,如“微软常用运行库合集 Dreamcast”、“微软Visual C++运行库 nanlon”等。

除了上面的一键修复工具,还可以在微软官网下载各版本的VC运行库安装。搜索“最新受支持的 Visual C++ 可再发行”或“最新可再发行”,可以找到官网下载页。

下载页包含了所有非Debug版的VC运行库,点击要下载的版本可以看到下载地址。

VC运行库的dll,一般是“ msvc*数字*.dll ”、“ mfc*数字*.dll ”、“ vc*数字.dll ”这样格式的。而名称结尾带d的是debug版运行库,网上一般下载不到,需要安装对应的visual studio版本才会附带。

所有的VC运行库都不需要也不能用regsvr32命令注册。

一.VC2005运行库,版本号数字80,大致包含下面dll。

  • vcomp.dll、msdia80.dll、ATL80.DLL

  • msvcm80.dll、msvcp80.dll、msvcr80.dll

  • mfc80.dll、mfc80u.dll、mfcm80.dll、mfcm80u.dll

  • mfc80CHS.dll(CHS、CHT、DEU、ENU、ESP、FRA、ITA、JPN、KOR)

除了msdia80.dll在Common Files\Microsoft Shared\VC路径,其余dll均在winsxs文件夹里。

安装vc2005时可能遇到的错误:

  1. Command line option syntax error. Type Command /? for Help.


    原因是用户文件夹或临时目录路径有中文等特殊字符。几个解决方法:先解压一遍exe再打开解压后的文件安装;修改用户环境变量temp和tmp指向纯英文路径;修改中文用户文件夹为纯英文。

  2.Error 1935.安装程序集 xxx 过程中发生错误。

上图的原因是禁用了Windows Modules Installer(TrustedInstaller)服务导致,其余原因看cbs.log日志说不定有具体错误描述。

Visual C++运行库里,只有VC2005和VC2008会出现安装程序集错误。

二、VC2008运行库,版本号数字90,大致包含下面dll。

  • vcomp90.dll、msdia90.dll、ATL90.DLL

  • msvcm90.dll、msvcp90.dll、msvcr90.dll

  • mfc90.dll、mfc90u.dll、mfcm90.dll、mfcm90u.dll

  • mfc90CHS.dll(CHS、CHT、DEU、ENU、ESN、ESP、FRA、ITA、JPN、KOR、RUS)

跟上面的vc2005差不多。

二、VC2010运行库,版本号数字100,大致包含下面dll。

  • vcomp100.dll、msdia100.dll、ATL100.DLL

  • msvcp100.dll、msvcr100.dll

  • mfc100.dll、mfc100u.dll、mfcm100.dll、mfcm100u.dll

  • mfc100CHS.dll(CHS、CHT、DEU、ENU、ESN、FRA、ITA、JPN、KOR、RUS)

除了msdia100.dll跟上面的一样,其余dll均在system32或syswow64目录。

三、VC2012运行库,版本号数字110,大致包含下面dll。

  • vcomp110.dll、vcamp110.dll、vccorlib110.dll、ATL110.DLL

  • msvcp110.dll、msvcr110.dll

  • mfc110.dll、mfc110u.dll、mfcm110.dll、mfcm110u.dll

  • mfc110CHS.dll(CHS、CHT、DEU、ENU、ESN、FRA、ITA、JPN、KOR、RUS)

所有dll都在system32或syswow64目录。

、VC2013运行库,版本号数字120,大致包含下面dll。

  • vcomp120.dll、vcamp120.dll、vccorlib120.dll

  • msvcp120.dll、msvcr120.dll

  • mfc120.dll、mfc120u.dll、mfcm120.dll、mfcm120u.dll

  • mfc120CHS.dll(CHS、CHT、DEU、ENU、ESN、FRA、ITA、JPN、KOR、RUS)

除了少了ATLxxx.dll,其余跟VC2012差不多。

五、VC2015-2022运行库(包含2015、2017、2019、2022),版本号数字140,大致包含下面dll。

  • concrt140.dll、vcomp140.dll、vcamp140.dll、vccorlib140.dll、vcruntime140.dll、vcruntime140_1.dll

  • msvcp140.dll、msvcp140_1.dll、msvcp140_2.dll、msvcp140_atomic_wait.dll、msvcp140_codecvt_ids.dll

  • mfc140.dll、mfc140u.dll、mfcm140.dll、mfcm140u.dl

  • mfc140CHS.dll(CHS、CHT、DEU、ENU、ESN、FRA、ITA、JPN、KOR、RUS)

dll文件都在system32或syswow64目录。msvcp140_1.dll、msvcp140_2.dll在VC2017后出现;vcruntime140_1.dll、msvcp140_atomic_wait.dll(VC2019某版本后出现)、msvcp140_codecvt_ids.dll在VC2019后出现。xp系统最高能安装vc2015-2019。

VC2015-2022中高版本兼容低版本(即装了vc2015-2022就无需再安装2015、2017、2019这些)。除了极个别软件安装包认死理(如Edius 9报错0x80070666)在装了高版本的情况下就是装不上,除非卸载所有2015、2017、2019、2022后才能安装。

VC2015-2022运行库在win7、win8等版本上安装时,会额外安装kb2999226补丁。这个补丁包含ucrtbase.dll、api-ms-win-xxx.dll系列dll,API sets DLL(API集DLL)。


用dark.exe -x参数,或者UniExtract2可以提取运行库exe里的文件。

由于xp系统没有对应的kb2999226补丁,所以只能安装VC2019以下版本,这些版本的API sets DLL包含在vcRuntimeMinimum组件的cab1.cab,不需要安装补丁就会释放api-ms-win-xxx.dll这些dll。

相关dll文件名:

ucrtbase.dll、api-ms-win-core-console-l1-1-0.dll、api-ms-win-core-datetime-l1-1-0.dll、api-ms-win-core-debug-l1-1-0.dll、api-ms-win-core-errorhandling-l1-1-0.dll、api-ms-win-core-file-l1-1-0.dll、api-ms-win-core-file-l1-2-0.dll、api-ms-win-core-file-l2-1-0.dll、api-ms-win-core-handle-l1-1-0.dll、api-ms-win-core-heap-l1-1-0.dll、api-ms-win-core-interlocked-l1-1-0.dll、api-ms-win-core-libraryloader-l1-1-0.dll、api-ms-win-core-localization-l1-2-0.dll、api-ms-win-core-memory-l1-1-0.dll、api-ms-win-core-namedpipe-l1-1-0.dll、api-ms-win-core-processenvironment-l1-1-0.dll、api-ms-win-core-processthreads-l1-1-0.dll、api-ms-win-core-processthreads-l1-1-1.dll、api-ms-win-core-profile-l1-1-0.dll、api-ms-win-core-rtlsupport-l1-1-0.dll、api-ms-win-core-string-l1-1-0.dll、api-ms-win-core-synch-l1-1-0.dll、api-ms-win-core-synch-l1-2-0.dll、api-ms-win-core-sysinfo-l1-1-0.dll、api-ms-win-core-timezone-l1-1-0.dll、api-ms-win-core-util-l1-1-0.dll、api-ms-win-crt-conio-l1-1-0.dll、api-ms-win-crt-convert-l1-1-0.dll、api-ms-win-crt-environment-l1-1-0.dll、api-ms-win-crt-filesystem-l1-1-0.dll、api-ms-win-crt-heap-l1-1-0.dll、api-ms-win-crt-locale-l1-1-0.dll、api-ms-win-crt-math-l1-1-0.dll、api-ms-win-crt-multibyte-l1-1-0.dll、api-ms-win-crt-private-l1-1-0.dll、api-ms-win-crt-process-l1-1-0.dll、api-ms-win-crt-runtime-l1-1-0.dll、api-ms-win-crt-stdio-l1-1-0.dll、api-ms-win-crt-string-l1-1-0.dll、api-ms-win-crt-time-l1-1-0.dll、api-ms-win-crt-utility-l1-1-0.dll

有些API sets DLL是系统自带的,比如win7、win8、win10都自带有。提示找不到这些DLL时(win10一般不会有这些提示),安装VC2015-2022运行库可能没有用,需要用sfc /scannow命令修复或者从win8里提取相关dll,又或者升级系统(比如某软件不兼容旧版的win7时报错,需要win8或win10里才有的API sets DLL)。

API sets DLL不能从网上下载复制到system32等目录,因为版本对不上会报错,无法定位XXX。

个别电脑因为某些补丁出错可能导致kb2999226补丁装不上,导致安装完VC2015-2022运行库了还是缺少API sets DLL。分析cbs.log日志文件可能有帮助。


其余安装VC运行库可能遇到:

  • 1625错误(Auto Uninstaller流氓工具导致);


  • 无法卸载或安装,提示缺少msi文件安装源。用Windows Installer Clean Up修改版清理残留后安装可以解决。



有时候因为误删或误替换个别VC运行库DLL后,在安装了对应的VC运行库时还报错找不到XXX.dll。这时候卸载对应VC运行库后重新安装,又或者控制面板里更改修复安装可以解决。

静默安装参数:

  • vc2005、vc2008:/Q

  • 其余:/install /passive /norestart


找不到dll问题之第二课《Visual C++运行库篇》的评论 (共 条)

分享到微博请遵守国家法律