八一八在共享DLL中使用MFC和在静态库中使用MFC

时光总嘲笑我的痴心妄想 提交于 2019-12-06 07:04:48

最经在用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,你妹啊,就这样跑起来了!!!

求前辈们解释……

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