如何处理COM事件? 我试图处理从C服务器到C++客户端的COM事件。我可以使用服务器regfree,但我的事件不再工作

如何处理COM事件? 我试图处理从C服务器到C++客户端的COM事件。我可以使用服务器regfree,但我的事件不再工作,com,atl,regfreecom,registration-free-com,Com,Atl,Regfreecom,Registration Free Com,以前,通过注册,通过ATL中的IDispentimpl在客户端处理事件 我还没有找到任何直接解决这个问题的文章,但我确实看到了一个建议,IConnectionPoint本身并不需要注册 我还看到一些建议说,IDispEventSimpleImpl可以免费工作。IDispEventImpl需要访问类型库。您需要在服务器清单中包含引用,以便将其加载到激活上下文中: <file name="mydll.tlb"> <typelib tlbid="{TLBID}

以前,通过注册,通过ATL中的
IDispentimpl
在客户端处理事件

我还没有找到任何直接解决这个问题的文章,但我确实看到了一个建议,
IConnectionPoint
本身并不需要注册


我还看到一些建议说,
IDispEventSimpleImpl
可以免费工作。

IDispEventImpl
需要访问类型库。您需要在服务器清单中包含引用,以便将其加载到激活上下文中:

<file name="mydll.tlb">
    <typelib
        tlbid="{TLBID}"
        version="1.0"
        helpdir=""
        flags="hasdiskimage"/>
</file>

您的客户端接收器也需要使用typelib ID声明:

class CMySink: public IDispEventImpl<1, CMySink, &IID_IEvent, &TLBID, 1, 0>
class CMySink:public IDispevenTempl
作为替代方案,您还可以实现
IDispEventSimpleImpl
,它可以在没有类型库的情况下工作