Dict.CN 在线词典, 英语学习, 在线翻译

学海苦作舟,书山勤为径

留下点回忆

常用链接

统计

积分与排名

Denoise

English study

Web技术

数据压缩

一些连接

最新评论

从DLL外面删除DLL传递出来的BUFFER产生的问题

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

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

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

posted on 2006-06-13 09:43 笨笨 阅读(552) 评论(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 笨笨

呵呵,你调式怎么办?所以还必须区别对待  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理