You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何检查C++文件依赖的DLL?VS2017生成的exe运行缺DLL求助

解决Win32控制台应用复制后找不到DLL的问题

这是VS开发C++程序时很常见的依赖问题,我给你几个实用的解决方案:

方案1:切换到Release模式构建(最推荐)

Debug版本的程序默认依赖带调试符号的VC++运行库(文件名通常带d后缀,比如vcruntime140d.dll),这类库只有安装了Visual Studio的电脑才会自带,其他机器没有就会触发找不到DLL的报错。而Release模式使用的是发布版运行库,兼容性好很多:

  • 在VS顶部的解决方案配置下拉菜单里,把Debug改成Release
  • 右键项目选择生成(或重新生成
  • 去项目目录下的Release文件夹找到生成的.exe,这个版本的程序基本能直接复制到其他电脑运行(如果是动态链接的Release版,目标电脑若未预装对应VC++ Redistributable,你也可以把发布版运行库DLL和exe一起打包)

方案2:静态链接VC++运行库(Debug/Release都适用)

如果你需要保留Debug版本的调试特性,或者不想依赖任何外部DLL,可以把运行库代码直接编译进exe:

  • 右键你的项目,选择属性
  • 在左侧导航栏找到配置属性 -> C/C++ -> 代码生成
  • 找到运行库选项:
    • 若当前是Debug配置,把默认的多线程调试 DLL (/MDd)改成多线程调试 (/MTd)
    • 若当前是Release配置,把多线程 DLL (/MD)改成多线程 (/MT)
  • 点击确定后重新生成项目
    这样生成的exe会把所需运行库打包在内,复制到任何Windows电脑都能直接运行,唯一缺点是exe体积会稍有增大。

方案3:打包调试运行库(仅Debug版本需要)

如果必须分发Debug版本的程序,那得把对应的调试DLL和exe放在一起:

  • 打开VS的安装目录,找到调试运行库的存放位置,示例路径:
    C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Redist\MSVC\14.16.27012\debug_nonredist\x86\Microsoft.VC141.DebugCRT
    (路径里的版本号、x86/x64会根据你的VS安装版本和项目位数有所变化)
  • 把该文件夹里的vcruntime140d.dllmsvcp140d.dllucrtbased.dll等文件,全部复制到你的exe所在目录
  • 现在把exe和这些DLL一起复制到其他电脑,就能正常运行了

注意:如果你的程序还依赖其他第三方库的DLL,也要记得把这些DLL一并打包哦。

内容的提问来源于stack exchange,提问作者Anonymous

火山引擎 最新活动