0

我有一堆继承从 idl 文件生成的抽象接口的对象。使用这些接口的每个对象都包含相同的文件 interfaces.h,其中包含所有 c++ 生成的映射到 idl 接口的抽象类。

每次我将任何内容更改为interfaces.idl 时,每个依赖于此的类都必须重建,因为interfaces.h 发生了变化。是否有一个标志或其他东西告诉 midl 在自己的 .h 中生成每个抽象类?

4

2 回答 2

1

我能想到的唯一办法就是把每个接口放在自己的IDL文件中,或者根据变化率将它们分成多个IDL。

然后将这些接口 IDL 包含(或者是#import——我忘记了)到主库 IDL 中,如果需要,它将生成类型库。

于 2009-07-17T10:08:05.663 回答
1

这是一个关于如何组织 idl 以生成单独的 .h 文件和单个类型库的示例。正确的指令是 import。

主文件

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

碎片1.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();
};

碎片2.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();
};
于 2009-08-17T15:10:54.880 回答