我在 ATL 项目中有接口,该接口必须包含带有 Scripting::IDictionary** 参数的成员,但在带有我的接口描述的 MIDL 文件中,这是不可能的,因为默认库中没有提供脚本库。我总是有 scrrun.tlb 并试图在 MIDL 中使用它,但它不起作用
代码在这里:midl-code
将以下内容添加到您的 IDL:
importlib("scrrun.dll");
然后你可以使用IDictionary
.
在 XP 及更高版本上为我工作。
这是我的一些 IDL 的片段:
import "oaidl.idl";
import "ocidl.idl";
library FooLib
{
importlib("stdole2.tlb");
importlib("scrrun.dll");
[
uuid(XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX),
helpstring("_FooLibEvents Interface")
]
dispinterface _IFooEvents
{
properties:
methods:
[id(1)] void AnEvent(IDictionary* dict);
};
...
}