DLL之间调用和释放异常的问题!我已经加了ShareMem单元了啊。(100分)

  • 主题发起人 主题发起人 netnice
  • 开始时间 开始时间
N

netnice

Unregistered / Unconfirmed
GUEST, unregistred user!
现在编写了两个DLL动态库,一个【A】是实现数据的组包,解析功能,另一个【B】是实现包数据的发送接收。
A通过LoadLibrary动态载入B。 A释放时,利用FreeLibrary释放B。此时释放出现异常错误! 错误提示:0x00000000不能读。 如果A释放时,不调用释放B句柄,那么就不会出现这个错误,但这样不是有泄漏内存的嫌疑。
动态库里我都用的 stdcall 方式,并且在这两个 *.pbr 都加入了ShareMem单元。
我单步跟踪过,就是一释放 B 句柄就会出错。
请高手指点!!!
谢谢!!! 是不是和 ShareMem 有关??

 
里面凡是export的函数都是用的pchar,,只是一些局部函数用的string
另外还用了tstringlist,但都是dll内部啊。并且调用了sharemem
 


我的问题跟你的类似。我也没找到答案呢,有答案,咱们互相通知一下吧。
 
我的QQ86779411。
 
很奇怪。这个dll用delphi直接调用就不会出错。
用vb程序来调用就会有这个问题。我感觉还是sharemem或dll内部用了string的问题。
但不用string那太费劲了。。。
 
别的语言可没有Delphi自己的这种字符串String
sharemem也只能在Delphi的程序之间使用,
和别的语言配合,出错是必然的,
用字符串指针做参数, 就像c语言中的那样,没有别的办法
 
DLL 内部调用也必都用Pchar吗?
声明给外部调用的接口都是Pchar的。
 
不用string类型,试一下shortstring;
 
在我得DLL里使用了String变量来来作为接收缓冲区,shortstring不太合适吧。
 
只在内部使用string没必要加ShareMem单元
 
同意楼上说的!不用的!
如果外部调用的是string型,引用ShareMem发布的时候还要borlandmm.dll
 
是string的问题,改为widestring即可
 
在delphi程序调用delphi写的dll时,用到string参数也是要用sharemem的。
供vb使用的dll中的string参数应用pchar,vb中用string,但可能不是string的问题,也有可能是其他类型变量的问题, http://www.delphibbs.com/delphibbs/dispq.asp?lid=2367132 我的问题,还没搞定。
 
后退
顶部