gpt4 book ai didi

c++ - ATL/COM : MIDL compiler doesn't output UUID for dispinterface

转载 作者:行者123 更新时间:2023-11-28 03:14:39 24 4
gpt4 key购买 nike

在为我的类触发的事件实现连接点时,我声明了一个 dispinterface在我的 IDL 中这样

[
uuid(123-MY-GENERATED-GUID)
]
dispinterface _IMyChangeEvents {
properties:
methods:
[id(1)] void ItemChanged([in] BSTR changeInformation);
};

根据多个来源,包括“ATL Internals”一书,这应该产生一个 DIID__IMyChangeEvents然后我可以使用它从 ATL::IConnectionPointImpl<ImplClass, IID> 派生我的类.但它不存在,我也不能使用 __uuidof(_IMyChangeEvents)CONNECTION_POINT_ENTRY文档中描述的宏,因为它提示“没有 GUID 与该对象相关联”。

实现它的正确方法是什么?

最佳答案

此代码片段是在 library{} block 内部还是外部? library{} 之外的所有内容都会进入生成的 .h 文件。 library{} 中定义或引用的所有内容都会进入生成的 .tlb 文件。

典型的 .IDL 文件看起来像这样:

interface IMyMainInterface {...};
dispinterface MyEvents {...};

library {
coclass MyCoClass {
[default] IMyMainInterface;
[default, source] MyEvents;
}
}

这样,为了方便客户,您将拥有 .h 和 .tlb 中的所有内容。

关于c++ - ATL/COM : MIDL compiler doesn't output UUID for dispinterface,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17302922/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com