2012-08-08 93 views
0

我有我的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中的方法可见吗?

+0

仅仅因为你通过TlbExport运行Other.dll并不意味着所有的对象和方法都被暴露。使用OLEView检查Other.tlb以查看它是否按预期工作。发布IDL以获取更多帮助。 – tcarvin 2012-08-08 11:17:43

+1

这需要将属性应用于Other.dll中的类。如果你没有它的源代码,那么你不能这样做。 – 2012-08-08 12:36:39

+0

@HansPassant我没有它的源代码 – 2012-08-08 12:53:38

回答

1

因此,如果我正确地理解了你,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); 
} 

这个工作不会成功吗?

+0

在COM中也可以看到Other.dll。 MyLib.dll使用Other.dll中的函数。它虽然没有工作 – 2012-08-08 10:51:24