未经处理的异常 System.IO.FileNotFoundException 未能加载文件和程序集 XXX.dll或它的某一个依赖项 找不到指定的模块
参考:带你玩转Visual Studio——带你跳出坑爹的Runtime Library坑
在做VC++开发的时候,双击应用程序,报错:
未经处理的异常 System.IO.FileNotFoundException 未能加载文件和程序集 XXX.dll或它的某一个依赖项 找不到指定的模块
step1 首先确认依赖的DLL是否在exe的同级目录下或者system32目录下。
step2 如果step1确认后依然不能解决问题,请检查你依赖的DLL是否还依赖其他DLL。
Dependency Walker 请务必下载。
在能正常运行和不能正常运行的电脑上,用depends.exe需要分析的DLL。
如上图,表明你的电脑的应用程序对应的目录下缺少CH341DLL.DLL,前面标识?表明缺少对应的文件。
当你补充CH341DLL.DLL后,关闭depends.exe后,再次用depends.exe打开FactoryAuto.Device.CH341.dll分析后,就不缺少DLL了,你的应用程序也能正常打开了。
STEP3 特别重要
当你自己开发DLL的时候,当你释放给别人的DLL的时候,请释放Release版本的。也就是你的运行库选择:多线程DLL(/MD)。
如果选择:多线程调试DLL(/MDd)。我的开发环境是VS2010,如果选择:多线程DLL(/MD),你开发的DLL依赖:msvcr100.dll,如果选择:多线程调试DLL(/MDd),你开发的DLL依赖:msvcr100d.dll,而VS2010的运行时库2010_x86.exe运行时库安装后在system32下有msvcr100.dll,而vs2010安装后两个都有,msvcr100d.dll用于调试。
调试过程中选择:多线程DLL(/MD),释放的时候选择:多线程调试DLL(/MDd)
当然你也可以把msvcr100.dll和msvcr100d.dll拷贝到你的应用程序的目录下。