【发布时间】:2017-08-17 18:17:20
【问题描述】:
我有一个公开 COM 对象的 ATL 项目。我希望我的 COM 对象不时调用消费者指定的函数,或通过其他不时通知消费者的方式。
我尝试在CerberusNative.idl 中添加一个方法,以便获取我想从 COM 实例端调用的 void 函数指针,以便使用者只需在初始化时告诉 COM 对象它的回调是什么是:
interface ICerberusSession : IDispatch {
[id(5)] HRESULT SetCallbacks([in] void(*userExit)(int, char *), [in] void(*userAttemptingReconnection)(), [in] void(*userReconnected)());
};
但是,我的 void 函数指针存在一些问题:
严重性代码描述项目文件行抑制状态 对象接口中的错误 MIDL2269 过程必须返回一个 HRESULT : [( Parameter 'userExit' ) ] 错误 MIDL2131 参数必须 不是函数:[过程'SetCallbacks'的参数'userExit' (接口'ICerberusSession')]
我可以通过哪些方式让客户端应用程序订阅我的 COM 对象中的回调函数?
【问题讨论】:
-
如果有人可以提供帮助或有兴趣,请追问:stackoverflow.com/questions/43006702/…