在C#中,我的解决方案中有一个类及其接口,我希望它们是COM可见的。
我有:
创建了如下界面和类:
[InterfaceType(ComInterfaceType.InterfaceIsDual), Guid("0D1ABB24-144E-4C88-A4A5-DC3ED0E61BEB")]
[ComVisible(true)]
public interface IMyInterface
{
// methods here
}
[ClassInterface(ClassInterfaceType.None), Guid("01AA5822-83D1-42C6-A578-C9A84AB836AA")]
[ComVisible(true)]
public class MyClass : IMyInterface
{
// implementation here
}
(注意它们都是COM可见的)
生成了GUID并在程序集信息中通知了它:
[assembly: Guid("MY-GUID-HERE")]
使用以下命令行注册:
c:\regasm.exe /tlb MyAssembly.Dll
在Delphi 7中导入了类型库。
生成一个单元,但它不包含类和函数/过程。调用CoClass.Create
返回“未注册类”错误。
后来我创建了一个带有类库的新解决方案,执行上面相同的操作,以及生成的类和方法,我可以访问它们。
对于我可能错过的内容有任何提示吗?
答案 0 :(得分:0)
我发现了差异。 我想导出的一个TLB类在一个区域中有一些构造函数。当我展开它时,我看到没有参数的重载构造函数。 添加无参数构造函数后,它在Delphi中可见,我可以正常使用它。