c# - 将 C++ 回调函数传递给 COM 进程外方法
问题描述
已经回答了关于将 C++ 回调传递到进程内 COM 方法的问题。但是相同的技术不适用于进程外使用。
我有一个 C# 接口,它有一个使用两个参数注册回调/委托的方法。
void ProcessNotification(ConsoleNotificationType type, IntPtr parameter);
此 C# 接口是使用进程外 COM 配置(exe 文件)注册的。现在我想将 C++ 回调函数传递给该方法,但 Visual Studio 给了我一个错误:
InvalidFunctionPointerInDelegate
那么,如何将我的 C++ 回调函数传递给接口的注册回调函数呢?
解决方案
COM 中没有任何东西可以让您如此简单地做到这一点。在我能想到的任何编程范式中,您甚至都无法做到这一点。一个进程中的指针在另一个进程中是没有意义的。
官方的答案是定义一个回调接口并在实现对象上传递对该接口的引用,而不是传递一个简单的函数指针。而且,当然,您必须确保可以代理接口。(或者,您可以IConnectionPointContainer
在您的服务器上实现,这基本上是相同的想法。)
推荐阅读
- android - 在 Android 应用程序中将 geojson 文件添加到我的地图
- c# - C# Selenium Firefox 驱动程序设置 navigator.webdriver = false
- xml - bcp 命令未在格式文件中定义可空值
- centos - 旋转异常日志的 logrotate 问题
- javascript - 检查元素是否在屏幕上可见
- python - 在 Flask Restplus 中跳过默认模型验证
- html - 图像路径与上传的图像一起显示
- teradata - Performance issue for session with TPT write
- ruby-on-rails - 查询 jsonb 数组的部分值
- css - 在 google chrome devtools 中查找占位符伪样式