300分求高手给个DLL调用框架(300分)

  • 主题发起人 主题发起人 hbklove8
  • 开始时间 开始时间
H

hbklove8

Unregistered / Unconfirmed
GUEST, unregistred user!
实在没办法啦,找了近半年都没有找到方法,还请高手指教:

程序说明:主程序调用DLL中的字窗体(非模式方式打开,在任务栏上要显示按钮)
,要传adoConnection给DLL窗体,而且要打开多个DLL窗体,关闭时如果是最后一个
DLL窗体则释放DLL文件,我用freelibrary释放过,出错.

我试过的方法:改咏南写的"使用DLL封装窗体和业务类"(说实话,他写的真的很好用),
然后在主程序中记录开启的窗体数量,在DLL窗体关闭时给Application发送自定义消息
让主程序分析如果是最后一个窗体就freeLibrary(问题在于如果依次先关闭最后一个
打开的DLL窗体最后关闭第一个打开的DLL窗体就出现内存泄露,如果先关闭第一个打开的
DLL窗体再关闭其它就不会出错,实在太烦人了!).

还请高手回帖给个说明,然后将代码发给我:hbkbigmouth2@163.com,小弟菜鸟先谢过!

注:咏南的DLL下载:http://www.2ccc.com/article.asp?articleid=4043
他写的是mdi方式打开DLL窗体,我希望用show方式打开非模式窗体.

若有人能给个用多线程打开DLL窗体及释放DLL文件的方法,则再加分.
 
哎,用loadlibrary、FreeLibrary两个就可以呀,怎么搞那么久没搞定呢。

我已经用这个实现了QuickBurro 1.x多个版本,2.x多个版本,传入ADOConnection、Stream、文本,传出文本、Stream,也是多线程调用DLL。到QucikBurro 2.5、2.60版本,
我都已经实现自行加载DLL和释放DLL了,很流畅、可靠。

其实应该是你自己没处理好,按LoadLib与FreeLib成对出现的原则编程即可,还有,DLL中若有临界资源或全局变量,在调用的线程里要做临界区线程同步处理。
 
谢谢指导,可是如何成对出现LoadLib与FreeLib呢?
我要做的是show方式显示窗体,不是showModal,如果成对出现是show不出来的.
 
这有什么问题?
自己定个结构数组,对每个dll加个计数器,
然后写俩过程,封装loadlibrary和freelibrary,里面进行计数,当计数=0时,调用freelibrary,否则,load时计数+1,free时,计数-1,不就行了?
 
to:wpy020327
能给个DEMO吗?
代码附限帖或邮件都行,谢谢耐心回复.
希望由最后一个DLL窗体关闭后释放DLL文件.
 
这是在G上搜到的,大家可以参考,里面的方法我都试过,大部分不是用show方式的.
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1902697
 
qq:180887968我给你一个demo
 
to:人在昆明
能发到邮箱吗? hbkbigmouth2@163.com
你的QQ好像无人应答.
 
有谁需要参考这个代码的可以留下Email,帮忙看看到底什么原因出错,

access violation:at address:00000000 read of address 00000000
 
找到了.发份给我.谢谢..

我也在找..
 
怎么没人帮得上啊?太难了?
 
dll窗体中引用了同一个变量.
 
后退
顶部