Midl に各インターフェイスを個別の .h で生成させる方法はありますか?

StackOverflow https://stackoverflow.com/questions/1142352

  •  16-09-2019
  •  | 
  •  

質問

idl ファイルから生成された抽象インターフェイスを継承するオブジェクトが多数あります。これらのインターフェイスを使用する各オブジェクトには、idl インターフェイスにマップする C++ で生成されたすべての抽象クラスを含む同じファイルinterfaces.h が含まれています。

何かをinterfaces.idlに変更するたびに、interfaces.hが変更されるため、これに依存するすべてのクラスを再構築する必要があります。それぞれの抽象クラスを独自の .h で生成するように Midl に指示するフラグか何かはありますか?

役に立ちましたか?

解決

私は考えることができる唯一の方法は、独自のIDLファイル内の各インターフェイスを置く、または変化率に応じて複数のIDLにそれらを分割することである。

次に含める(またはそれが#IMPORTである - 私は忘れて)、タイプライブラリを生成しますメインライブラリIDL、にこれらのインターフェースのIDLあなたがそれを必要とする場合は、

他のヒント

ここでは、idl を整理して個別の .h ファイルと単一の typelib を生成する方法のサンプルを示します。正しいディレクティブは import です。

main.idl

import "oaidl.idl";
import "ocidl.idl";

import "frag1.idl";
import "frag2.idl";

[
    uuid(1BECE2AF-2792-49b9-B133-BBC89C850D6F),
    version(1.0),
    helpstring("Bibliothèque de types")
]
library Library
{
    importlib("stdole2.tlb");

    interface IFrag1;
    interface IFrag2;
}

frag1.idl

import "oaidl.idl";
import "ocidl.idl";

[
    object,
    uuid(9AEB517B-48B9-4628-8DD3-4A0BA8D39BEF),
    dual,
    nonextensible,
    helpstring("Interface IFrag1"),
    pointer_default(unique)
]
interface IFrag1 : IDispatch {
    HRESULT frag1();
};

frag2.idl

import "oaidl.idl";
import "ocidl.idl";

[
    object,
    uuid(D60835D4-E1B1-40fb-B583-A75373EF15BE),
    dual,
    nonextensible,
    helpstring("Interface IFrag2"),
    pointer_default(unique)
]
interface IFrag2 : IDispatch {
    HRESULT frag2();
};
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top