在具有大量IDL接口的COM类型库中管理定义

在具有大量IDL接口的COM类型库中管理定义,com,atl,idl,midl,typelib,Com,Atl,Idl,Midl,Typelib,我正在创建一个COM类型库,其中包含100多个接口。在单个库中定义所有接口和类是不合理的。。。IDL文件将变为数千行!因此,我尝试将每个接口放在自己的文件中,并使用导入来满足其依赖性 我可以使用什么策略来管理这么多接口?我尝试在任何地方使用导入指令,但我一直在尝试将它们包括在TLB中。我已经尝试过在库中包含,但是依赖项似乎让事情变得很棘手 例a.idl 例b.idl ExampleLibrary.idl 我认为您将接口拆分为多个tlb文件的计划很好,但是我不明白为什么您看起来是手动生成文件的 我

我正在创建一个COM类型库,其中包含100多个接口。在单个库中定义所有接口和类是不合理的。。。IDL文件将变为数千行!因此,我尝试将每个接口放在自己的文件中,并使用导入来满足其依赖性

我可以使用什么策略来管理这么多接口?我尝试在任何地方使用导入指令,但我一直在尝试将它们包括在TLB中。我已经尝试过在库中包含,但是依赖项似乎让事情变得很棘手

例a.idl 例b.idl ExampleLibrary.idl
我认为您将接口拆分为多个tlb文件的计划很好,但是我不明白为什么您看起来是手动生成文件的

我的建议是将接口拆分为多个类型库,但使用类型库编辑器来创建它们


每个版本的Delphi都有一个类型库编辑器,但是如果你没有,那么网上应该有一些可用的编辑器。

只是出于好奇,你在写什么样的库,需要100多个接口?我想如果我尝试使用它,我的大脑会爆炸。如果是我,我会尝试按照某种逻辑顺序将它们分组,并将它们分为不同的库。^ ^我们有很多基础设施日志记录、文件I/O等,然后是通信类一组表示不同消息的类。我想我可以把它们放在不同的图书馆里。。。importlib会让我把它们都集中到一个主库中吗?嗯……像我尝试包含编译错误这样的描述没有多大帮助,你知道,除非你真的不关心结果。它们是类重新定义错误——我更新了注释。我不知道存在这样的事情。。。VisualStudio中包括一个吗?我正在使用ATL创建COM对象和接口。
import "oaidl.idl", "ocidl.idl";
[ uuid(...) ] interface IExampleA : IDispatch { ... }
import "oaidl.idl", "ocidl.idl", "IExampleA.idl";
[ uuid(...) ] interface IExampleB : IExampleA { ... }
// Should I put some imports here? They won't be included in the library.
import "IExampleA.idl";
import "IExampleB.idl";

[ uuid(...) ]
library InfrastructureLib
{
    // This? Imports in a library don't actually include the types
    import "IExampleA.idl";
    import "IExampleB.idl";

    // Or this? I get class redefinition errors trying #include 
    #include "IExampleA.idl"
    #include "IExampleB.idl"

    // Is there another way?
};