一分钟学会使用修复的stl库摆脱MSVCP60.dll

来源:互联网 发布:阿里云开发框架 编辑:程序博客网 时间:2024/05/01 06:57

       如何摆脱MSVCP60.dll, 这的确是一个困扰C++程序员很久的问题。究竟是个什么样的问题, 下面援引网上某篇文章内容如下(具体网址不记得了):


       一直以来我们都受到了蒙骗,以为stl作为一个模版库,所有的类和函数都是inline的,使用stl编写的程序不需要额外的依赖。并由此更偏爱用string而不喜欢CString,很明显,仅仅使用了一个字符串功能,就要给我的程序搭上一个近1M的mfc42.dll(使用静态链接MFC也郁闷:明明没写几行代码,编译出来的程序咋就那么大呢?)
后来慢慢的发现,用string还不如用CString。因为至少98以上的系统就自带有MFC42.dll。可是string需要的两个库(msvcrt.dll和msvcp60.dll)之一—msvcp60.dll在某些系统上却没有。这一点从网上搜搜有多少帖子在找MSVCP60.DLL就知道了。
不仅仅是string,在使用map和set的时候,居然也要用到msvcp60.dll。
为了解决这个问题,我搜遍了google上中文网页,没见有讨论这个问题的,大家的解决方案就是去下载一个MSVCP60.DLL。
后来在一个国外网站上发现了一条线索,(网址
http://www.dinkumware.com/vc_fixes.html)
原文就不摘录了,大意是VC的stl实现存在一点问题,其中特别提到了<xtree>的实现由于自作主张的用到了线程互斥,从而要依赖DLL。

基于上面国外网站的这篇文章,我们的牛人王高全同学手工修复了所有的stl中可能引用到这两个dll的代码部分,做成了如下的修复包。如果你是个使用C++的程序员,并且正在使用STL,你可以下载下面这个修复库,并替换Microsoft Visual Studio/VC98/Include中相关的部分即可。编译出来的使用STL的程序将不再依赖于MSVCP60.dll.由于没有做过全面测试,我们不对使用这个修复库产生的任何问题负责,但是可以肯定告诉大家,至少我们在使用这个库的相当长时间内没有发生任何问题。如果有任何意见或发现任何bug,欢迎交流。

 下载STL修复补丁:

http://wh.hust.colin.googlepages.com/stl-fixed.rar 

原创粉丝点击