Delphi 7在导入类型库

时间:2017-02-17 18:53:39

标签: c# com delphi-7 .net-assembly

在C#中,我的解决方案中有一个类及其接口,我希望它们是COM可见的。

我有:

  1. 创建了如下界面和类:

    [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可见的)

  2. 生成了GUID并在程序集信息中通知了它:

    [assembly: Guid("MY-GUID-HERE")]
    
  3. 使用以下命令行注册:

    c:\regasm.exe /tlb MyAssembly.Dll
    
  4. 在Delphi 7中导入了类型库。

  5. 生成一个单元,但它不包含类和函数/过程。调用CoClass.Create返回“未注册类”错误。

    后来我创建了一个带有类库的新解决方案,执行上面相同的操作,以及生成的类和方法,我可以访问它们。

    对于我可能错过的内容有任何提示吗?

1 个答案:

答案 0 :(得分:0)

我发现了差异。 我想导出的一个TLB类在一个区域中有一些构造函数。当我展开它时,我看到没有参数的重载构造函数。 添加无参数构造函数后,它在Delphi中可见,我可以正常使用它。