如何使第三方dll中的方法在vb6中可见?
我有我的C#.net类库(MyLib.dll
)。 MyLib.dll正在调用通过引用添加到我的类库(MyLib.dll)的其他第三方DLL文件(Other.dll
)。如何使第三方dll中的方法在vb6中可见?
现在的问题是,MyLib.dll
将用于vb 6.0。
我已经注册了MyLib.dll
来启用COM,并且我在我的类库的Properties中设置了Register for COM Interop
选项。
此外,我已生成.tlb
文件MyLib.dll
(使用Regasm
)和Other.dll
使它们在COM中可见。 我可以在参考文献vb6中看到MyLib and Other
。
MyLib
中的方法是可见的,但在使用vb6打开时,Other
中的方法不可见。
我也尝试将MyLib放入GAC,但Other.dll
(第三方dll)不支持vb6,它只支持C#.net和VB.Net。
如何使vb6中的Other.dll
中的方法可见。
有什么办法让第三方dll中的方法可见吗?
因此,如果我正确地理解了你,MyLib.dll从COM可见,但Other.dll不是。但是,如果从MyLib.dll中可以看到Other.dll,则可以使用MyLib.dll作为Other.dll和COM之间的桥梁。
说你的Other.dll有一个void Foo(int x,string y)函数你想暴露给COM。在MyLib.dll上生成一个函数就像这样
public void Foo(int x, string y)
{
Other.Foo(x, y);
}
这个工作不会成功吗?
在COM中也可以看到Other.dll。 MyLib.dll使用Other.dll中的函数。它虽然没有工作 – 2012-08-08 10:51:24
仅仅因为你通过TlbExport运行Other.dll并不意味着所有的对象和方法都被暴露。使用OLEView检查Other.tlb以查看它是否按预期工作。发布IDL以获取更多帮助。 – tcarvin 2012-08-08 11:17:43
这需要将属性应用于Other.dll中的类。如果你没有它的源代码,那么你不能这样做。 – 2012-08-08 12:36:39
@HansPassant我没有它的源代码 – 2012-08-08 12:53:38