在Visual Studio 2010中运行exe文件时遇缺失dll错误求助
解决「缺少vcruntime140.dll/ucrtbased.dll」的问题
首先得提一句:手动复制DLL文件虽然能临时解决问题,但不是最优方案——很容易出现版本不匹配、系统位数(32/64位)不对的情况,甚至可能搞乱系统文件。更稳妥的方式是安装对应的Microsoft Visual C++ Redistributable包(对应vcruntime140.dll的是2015-2022版本的运行时库)。不过既然你已经下载了这两个文件,下面给你说具体的放置位置:
按程序位数选择放置路径
首先要搞清楚你的exe是32位(x86)还是64位(x64):
- 32位程序:
- 如果是64位Windows系统,把32位版本的DLL放到
C:\Windows\SysWOW64\目录 - 如果是32位Windows系统,放到
C:\Windows\System32\目录 - 最稳妥的做法:直接把DLL放到你的exe文件所在的同一个文件夹里(这样不会影响系统里的其他程序,也不用担心路径权限问题)
- 如果是64位Windows系统,把32位版本的DLL放到
- 64位程序:
- 把64位版本的DLL放到
C:\Windows\System32\目录 - 同样,放到exe同目录也是安全选项
- 把64位版本的DLL放到
关于ucrtbased.dll的额外说明
ucrtbased.dll 是Debug版本的C运行时库,这说明你现在运行的是Debug模式编译出来的exe。Debug版本的运行时库本来就不是给最终分发用的,如果你是自己测试还好,但如果要给别人用,建议编译成Release版本——Release版本会使用非Debug的运行时文件(比如ucrt.dll),而且只要对方装了对应的VC++运行时库就能正常运行,不需要手动复制DLL。
另外补充一点:vcruntime140.dll其实是Visual Studio 2015及以后版本的运行时文件,而你用的是VS2010,这说明要么你的项目是用VS2010但切换了更高版本的工具集,要么你运行的exe是用更高版本VS编译的。如果是后者,直接装对应版本的VC++ Redistributable包会比手动复制DLL靠谱得多。
内容的提问来源于stack exchange,提问作者Alberto Succini
相关产品推荐
相关产品推荐

