【发布时间】:2012-08-08 09:25:58
【问题描述】:
我有我的 C#.net 类库 (MyLib.dll)。 MyLib.dll 正在调用通过引用我的类库(MyLib.dll) 添加的其他第三方 dll(Other.dll) 文件。
现在的问题是 MyLib.dll 要在 vb 6.0 中使用。
我已注册MyLib.dll 以启用COM,并且我已在我的类库的属性中设置Register for COM Interop 选项。
我还为MyLib.dll(使用Regasm)和Other.dll 生成了.tlb 文件,以使它们在COM 中可见。
我可以在 vb6 的参考文献中看到 MyLib and Other。
MyLib 中的方法可见,但Other 中的方法用 vb6 打开时不可见。
我也尝试将 MyLib 放在 GAC 中,但 Other.dll(Third party dll) 不支持 vb6,它只支持 C#.net 和 VB.Net。
如何使Other.dll中的方法在vb6中可见。
有没有办法让第三方 dll 中的方法可见?
【问题讨论】:
-
通过TlbExport 运行Other.dll 并不意味着里面的所有对象和方法都暴露了。使用 OLEView 检查 Other.tlb 以查看它是否按预期工作。发布 IDL 以获得更多帮助。
-
这需要将属性应用到 Other.dll 中的类。如果你没有它的源代码,那么你不能这样做。
-
@HansPassant 我没有它的源代码
-
再次,如果您没有 Other.dll 的源代码,我认为我的答案是您的最佳选择。在 MyLib(可访问的)上创建“影子”函数或方法,只调用 Other.dll(不可访问的)上的真实函数或方法并接收结果。然后,您可以将这些结果传递给 VB6,或对其进行操作、存储或其他任何操作……简而言之:为 Other.dll 制作一个 包装器。