我有一堆继承从 idl 文件生成的抽象接口的对象。使用这些接口的每个对象都包含相同的文件 interfaces.h,其中包含所有 c++ 生成的映射到 idl 接口的抽象类。
每次我将任何内容更改为interfaces.idl 时,每个依赖于此的类都必须重建,因为interfaces.h 发生了变化。是否有一个标志或其他东西告诉 midl 在自己的 .h 中生成每个抽象类?
我有一堆继承从 idl 文件生成的抽象接口的对象。使用这些接口的每个对象都包含相同的文件 interfaces.h,其中包含所有 c++ 生成的映射到 idl 接口的抽象类。
每次我将任何内容更改为interfaces.idl 时,每个依赖于此的类都必须重建,因为interfaces.h 发生了变化。是否有一个标志或其他东西告诉 midl 在自己的 .h 中生成每个抽象类?
我能想到的唯一办法就是把每个接口放在自己的IDL文件中,或者根据变化率将它们分成多个IDL。
然后将这些接口 IDL 包含(或者是#import——我忘记了)到主库 IDL 中,如果需要,它将生成类型库。
这是一个关于如何组织 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();
};