对dll内部结构了解比较深的进来看一下(100分)

  • 主题发起人 主题发起人 biuuige
  • 开始时间 开始时间
B

biuuige

Unregistered / Unconfirmed
GUEST, unregistred user!
公司的数据库连接函数封装在了dll里面,
其它业务模块也是基于dll开发的,引用了数据库连接的dll,

现在出现的情况是不同的业务模块加载进来以后,在内存出现了多份数据库连接的dll副本,考虑用内存映射对象来保证相同的同一份拷贝,
问:有没有其它更好的解决方式 保证我的数据库连接在主窗体调用不同dll的时候只被
实例化一次
 
database和adoconnection都是可以传到dll中,你在主程序中建立一个数据库连接,然后在加载dll后就将连接传到dll中的各个dataset中,这样的例子很多。
 
引用接口就可以搞定了。 保证一个dll,一个连接, 多个模块随便用
 
duhai_lee:
能不能具体给个例子,我另外出分支持.
谢谢!

这个问题跟我下面这个问题有共通性:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3090465
 
建立公用模块public.pas
unit pas
declare procedure Dllproc() explort.......
.....
public
conn: adoconnection;
程序载入或登录时,初始化连接。
conn.connectionstring:='..........';
在需要用到连接的地方将连接指向此连接。
 
to TYZhang:
解决方式有很多种,使用com,内核对象,dll初始化时强行赋地址.

我的意思是想说在loadlibaray函数调用时,有没有类似于loadpackage之类函数调用之前的
预处理,将dll中的已经被主应用程序引用的副本单元清除或替换掉的功能,如果dll不能实现此类功能,那么除上述办法以外,有没有更优雅的办法将问题解决.

to zwz_good 说不清楚你就别说了.
 
后退
顶部