dll找不到问题

淺唱寂寞╮ 提交于 2020-01-24 15:03:55

用vs2010编写的程序经常会发生的一个问题。在自己的机器上运行的好好的,但是在别的机器上就会发生没有找到MSVCR100D.dll。这是 个很头疼的问题。对于一些代码量几百行的小程序,我不可能要求其他电脑也一定要配有MSVCR100D.dll这个dll。当然解决方法也有,但是我也不 可能要求所有的电脑都装上.net framwork 2.0。微软又给CSer们出了个难题。
原因:
工程默认没有使用静态联编,没有把必须的DLL库一块编译进去导致的。

解决方法:

在vs2010下,按ALT+F7,打开工程属性–>配置属性–>代码生成–>运行时库–>选多线程(/MT)

英文版为:Options->Configuration Properties->C/C+±>Code Generation->Runtime Library->Multi-threaded(/MT)

  • MT选项:静态链接LIB版的C和C++运行库。在链接时就会在将C和C++运行时库集成到程序中成为程序中的代码,程序体积会变大。
  • MTd选项:LIB的调试版。
  • MD选项:使用DLL版的C和C++运行库,这样在程序运行时会动态的加载对 应的DLL,程序体积会减小,缺点是在系统没有对应DLL时程序无法运行。
  • MDd选项:表示使用DLL的调试版。

在配置中,把“公共语言运行库支持”设置为:无公共语言运行库支持 就可以了

再次编译的时候可能产生错误,那么清理解决方案,再重新生成一次,就OK了,不过自己另外加的库文件还是要随程序一起打包的。

另外需要注意的是,报错为msvcp100d.dll,说明是在DEBUG下编译的程序,d表示DEBUG。报错为msvcp100.dll,说明是在RELEASE下编程的程序。也就是说,带d的都是DEBUG版本

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!