Dict.CN 在线词典, 英语学习, 在线翻译
随笔-99  评论-334  文章-0  trackbacks-0

这个问题我已经遇到很多次了,只是没有记性,在这里记录一下。这个问题只针对VC。
问题是:
在调用DLL的程序中删除DLL中分配的BUFFER会CRASH。

原因:
由于在VC编译的时候可以选择多种不同的运行时库,如果调用DLL的程序与DLL的这个选项不匹配(例如:DLL采用多线程DEBUG版本,而调用程序采用多线程DLL版本),那么就会出现上面的情况。

解决办法:
很简单,只需要让两种库为同一种就可以了。具体设置步骤如下:
菜单:项目-》设置-》C/C++-》代码生成-》运行时库

posted on 2006-06-13 09:43 笨笨 阅读(306) 评论(4)  编辑 收藏 引用

评论:
# re: 从DLL外面删除DLL传递出来的BUFFER产生的问题 2006-06-13 10:39 | 周星星
解决办法应该是谁分配谁释放
既然dll提供了获得缓冲的函数,那么就应该提供一个释放缓冲的函数。  回复  更多评论
  
# re: 从DLL外面删除DLL传递出来的BUFFER产生的问题 2006-06-13 15:12 | 笨笨
你说的很有道理,但有的时候,你从DLL得到一个BUFFER,然后你要使用他,但DLL根本不知道你什么时候释放。当然我们可以在DLL中提供一个API来专门用于释放BUFFER,哈哈,不过总有不方便的地方。
而且如果采用这种办法,我们根本不知道是采用的库导致删除BUFFER出问题的这个知识点.  回复  更多评论
  
# re: 从DLL外面删除DLL传递出来的BUFFER产生的问题 2006-06-14 11:04 | ZiDing
我的做法是,不管写啥都用MT就OK了。  回复  更多评论
  
# re: 从DLL外面删除DLL传递出来的BUFFER产生的问题 2006-06-14 16:32 | 笨笨
呵呵,你调式怎么办?所以还必须区别对待  回复  更多评论
  

标题  
姓名  
主页
验证码 *
内容(提交失败后,可以通过“恢复上次提交”恢复刚刚提交的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
[使用Ctrl+Enter键可以直接提交]
相关链接:
网站导航: