最经在用MFC做一个新浪的小东西,遇到的问题已让我无力吐槽,学到用时方恨少!
今天总结一下在有win32控制台转到MFC时遇到的一个问题。首先说一说共享DLL和静态库:
使用VS2008,在项目属性中有一项MFC的使用,有三种设置: 1.使用标准Windows库 2.在共享DLL中使用MFC 3.在静态库中使用MFC 第一种顾名思义。第二种指的是打包时一些MFC的DLL的内容没有被包含在EXE文件中,所以EXE文件较小,但是运行时要求系统中要有相关的DLL文件。第三种是将DLL中的相关代码写进EXE文件中,文件较大,但是可以在没有相关DLL的机器上运行。
由于当初配置环境耗费了很大的精力,本想使用静态库来使程序在不同机子上跑起来,可是让人头痛的缓冲区溢出来了。总是提示“其原因可能是堆被损坏或者它所加载的任何DLL中存在BUG”由于在MFC中我用到了CString向string的转化,所以就认为是不是这里的问题,搞到头痛也没解决问题……
后来突然想到既然是堆被损坏,或者DLL有BUG,那么是不是由于DLL加载到EXE中造成了堆的损坏呢?就将属性调到了共享DLL,你妹啊,就这样跑起来了!!!
求前辈们解释……
来源:oschina
链接:https://my.oschina.net/u/566587/blog/162429