0

100 を超えるインターフェイスを備えた COM タイプ ライブラリを作成しています。すべてのインターフェイスとコクラスを 1 つのファイルで定義するのは合理的ではありません。IDLlibraryファイルは何千行にもなります。そのため、各インターフェイスを独自のファイルに入れ、imports を使用してその依存関係を満たすというアイデアを試しています。

この多くのインターフェイスを管理するには、どのような戦略を使用できますか? どこでもディレクティブを使用しようとimportしていますが、それらを TLB に含めようとして行き詰まっています。で試してみ#includeましたがlibrary、依存関係がおかしいようです。

例A.idl

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

例B.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?
};
4

1 に答える 1

0

インターフェイスを複数の tlb ファイルに分割するというあなたの計画は問題ないと思いますが、手動でファイルを生成しているように見える理由がわかりませんか?

私の提案は、インターフェイスを複数のタイプ ライブラリに分割し、タイプ ライブラリ エディタを使用してそれらを作成することです。

タイプ ライブラリ エディタは Delphi のすべてのバージョンに付属していますが、これがない場合は、ネット上でいくつか入手できるはずです。

于 2010-07-16T21:12:32.183 に答える