Visibroker4.5 CORBA回调应用,当程序退出FreeLibrary OrbPas45.dll时,出现地址错误(300分)

  • 主题发起人 主题发起人 kevin scott
  • 开始时间 开始时间
K

kevin scott

Unregistered / Unconfirmed
GUEST, unregistred user!
请高手解决,如果分不够,可以再加,只要解决问题。
利用CORBA做分布式开发,且一定用回调。版本是Visibroker4.5
据我所知,这个版本实际上不是为Delphi开发的。
好像是用BCB写的,Delphi只是外包了一下。a
其中用到了四个dll:CC3260MT.DLL, orb_br.dll, OrbPas45.dll, vport_br.dll
这个版本的回调比3.3有了很大的改进,解决了3.3的一段时间Stub不能Bind到的致命问题
但仍有瑕疵
问题出现在 OrbPas45.pas中执行了LoadLibrary orbpas45.dll,但并没有FreeLibrary,
起初我以为Borland公司忘了写,因为这种情况下EndProcess是不会成功的,应用程序无法退出,因为有dll驻留。
于是本人自作主张加了个finally FreeLibrary
可是问题出现了,估计是那四个dll中使用到的线程问题
在程序退出时,FreeLibrary后经常会碰到地址错误,而这个地址错误应该是那四个dll所使用的线程产生的。(虽然不是每次都能碰到,但频率很高)
本人试验的情况是在ocx中肯定出现
地址错误实际上是个比较低级的错误,呵。。。。。。
但没有源代码,没有办法解决。
本人曾经想过强行kill掉这些出错的线程,但无法找到只和这四个dll相关的所有线程。
现在感觉,可能这就是为什么Delphi的源代码中为什么不执行FreeLibrary的原因了吧。呵。。。。。
 
建议用delphi7+corba补丁
 
delphi7+corba补丁?
哪里有corba补丁?请告知
 
后退
顶部