如何将从本机 c++ 的回调注册到 c#

How can i register callback from native c++ to c#

本文关键字:回调 注册 c++ 本机      更新时间:2023-10-16

我正在处理一个用c#(WPF)编写UI的任务。还有一些其他模块是用本机 c++ 实现的。 我需要将 c++ 模块的回调注册到 c# 模块,通过它我可以获取任何变量(如字符串类型)的更新值。 例如: 在 c++ 中:

String str =" ";

如果 str 上的 c++ 模块进行了任何更改,例如 str= " 和"; 然后我需要将此更新的值发送到 c# 模块。

请告诉我如何做到这一点?
PS:C# 和 C++ 模块在不同的 DLL 中。如果 dll 属性中有任何问题需要更改,那对我来说也可以。

提前谢谢。

我总是通过使用用 C# 声明并在 C# 中实现的 COM 接口(当您需要处理从 C++ 到 C# 的回调时)和C++ 何时相反。 您必须在 C# 和 COM 可见的接口中声明

[ComVisible(true)]
[GuidAttribute("12347261-8AF6-45ae-BAFD-6DFF7A8798E4")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface ICOMInterface
{ *** }

然后基于.tlb,.tlh在C++中实现接口