使用大量IDL接口管理COM类型库中的定义

时间:2010-07-16 17:37:52

标签: com atl idl midl typelib

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

我可以使用哪些策略来管理这么多接口?我正试图在任何地方使用import指令,但我一直试图将它们包含在TLB中。我在#include中尝试了library,但事情似乎与依赖关系变得一团糟。

ExampleA.idl

import "oaidl.idl", "ocidl.idl";
[ uuid(...) ] interface IExampleA : IDispatch { ... }

ExampleB.idl

import "oaidl.idl", "ocidl.idl", "IExampleA.idl";
[ uuid(...) ] interface IExampleB : IExampleA { ... }

ExampleLibrary.idl

// 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?
};

1 个答案:

答案 0 :(得分:0)

我认为您将接口拆分为多个tlb文件的计划很好,但我不明白为什么您似乎手动生成文件?

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

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