用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版本
来源:CSDN
作者:大荔一笑生
链接:https://blog.csdn.net/xxuwanhong/article/details/104079899