我在VS2012中用C#写了一个DLL:
namespace COMTest
{
public class MyClass
{
public int Fun()
{
return 3;
}
}
}
然后我设置“Make Assembly COM Visible = True”并在Build页面中设置“Register COM for intercrop”。然后创建一个新的VB6项目,添加对生成的dll文件的引用但失败了......后来尝试了tlb文件成功但是在说“a”之后没有intellisense。 (没有“有趣”的提示)
Dim a As MyClass
Set a = New MyClass
MsgBox (a.Fun())
所以我的问题是:
1)为什么我必须引用tlb文件而不是dll文件? 2)为什么没有intellisense?
答案 0 :(得分:1)
尝试勾选:
Tools->Options->Editor->Auto List Members
如果这没有帮助,那么要解决此问题,请使用要在TLB中公开的方法和属性来定义公共接口,然后在类中实现该接口。另外,将ClassInterface (ClassInterfaceType.None)
属性添加到类中。在开发组件时,可以使用此方法来避免使用ComVisible(False)
属性。
您可以获得更多详情here