首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

请教一个关于VB的多个ActiveX DLL公用类模块的有关问题

2012-04-28 
请问一个关于VB的多个ActiveX DLL公用类模块的问题。DLL工程A 使用../COMM/ABC.cls 类名为ABCDLL工程B 也使

请问一个关于VB的多个ActiveX DLL公用类模块的问题。
DLL工程A 使用
  ../COMM/ABC.cls 类名为ABC

DLL工程B 也使用
  ../COMM/ABC.cls 类名为ABC

当第三个EXE工程使用DLL A和DLL B时,
new ABC后,好像VB不能区分是DLL A还是DLL B的。
然后会把引用DLL顺序在后面的DLL,认为类型不匹配。

比如EXE工程先引用了DLL A再引用DLL B,
那么讲ABC new好后传给DLL B的函数讲报错。

其实EXE工程也使用 
  ../COMM/ABC.cls 类名为ABC
目的是想直接将已经new 好的ABC类,直接传递给DLL A 和 DLL B。 请怎么才能实现?


[解决办法]
dll A 和 dll B 即便具有一摸一样的 class
编译后他们也不是一个东西了,标识身份不一样了
这个和com对象原理有关,就不多说了
[解决办法]
dll工程的工程属性里有个工程名称,设置一个你喜欢的但又不重复的名称

dim x1 as aPtj.abc
dim x2 as bPrj.abc

set x1=aPtj.abc
set x2=bPtj.abc

[解决办法]
明显的设计问题。
作为同一个 ../COMM/ABC.cls 类名为ABC
 如果是私有类,A、B 直接包含,各自在内部使用,没问题。
 如果是公有类,A、B 以及 Exe 中具有完全相同的行为,就应该提取到公共的 Dll C 中,然后 A、B、Exe 全部引用 C。

热点排行