模块分解设计后如何互相调用的问题?

zwq78 2002-01-15 01:49:44
先从一个软件讲起,这个软件以前的版本的可执行文件有10多M,现在只有200K,从这个可执行文件去调用各个单独的模块(做成了DLL),其中的好处不言自明了。想请问高手这是如何实现的。
1、如何从主程序调用DLL;
2、模块DLL如何与主程序共享信息,如主程序维持着一个数据库连接,DLL如何使用这个连接,还有其它如登录人员信息等。
...全文
57 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ferrytang 2002-02-11
  • 打赏
  • 举报
回复
2.最简单的,在DLL定义PUBLIC全局变量
例:
DLL代码
PUBLIC ADOCN AS ADODB.CONNECTION
主程序代码
dim cn as new adodb.connection
dim dllClass as object
设置连接属性
set dllClass=createobject("编译后的DLL名称.DLL的类名")
dllClass ADOCN =cn
然后在DLL中就可以使用主程序中的ADO连接了。


这种做法还是一个对象一个连接的
而不是一个dll一个连接!
要实现这样只有用共享区域

至于第一个问题
有两种解决方式:
1.本地注册regsvr32.exe,这样你就可以直接引用,
2.远程注册clireg32.exe,你可以引用tlb文件
直接引用比createobject要快一点
wgku 2002-02-10
  • 打赏
  • 举报
回复
GZ
flysir 2002-02-10
  • 打赏
  • 举报
回复
值得研究!
y_shen 2002-01-15
  • 打赏
  • 举报
回复
不会有这个问题,先设置dll的对象/变量作为全局变量,然后在运用程序中调用dll传过来的对象/变量就可以了!
blp 2002-01-15
  • 打赏
  • 举报
回复
1.注册后用,createobject函数创建该类的实例。
2.最简单的,在DLL定义PUBLIC全局变量
例:
DLL代码
PUBLIC ADOCN AS ADODB.CONNECTION
主程序代码
dim cn as new adodb.connection
dim dllClass as object
设置连接属性
set dllClass=createobject("编译后的DLL名称.DLL的类名")
dllClass ADOCN =cn
然后在DLL中就可以使用主程序中的ADO连接了。
ferrytang 2002-01-15
  • 打赏
  • 举报
回复
2.使用 com 的共享区域

743

社区成员

发帖
与我相关
我的任务
社区描述
VB 版八卦、闲侃,联络感情地盘,禁广告帖、作业帖
社区管理员
  • 非技术类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧