从C++调用(C#).NET Core方法

And*_*w K 8 c# c++ ubuntu cross-platform .net-core

我有两个组件:
- 在Ubuntu OS上运行的.Net Core Application.
- C++共享库(.so)

现在我希望C++组件能够调用.Net Core方法,将接口传递给C++组件,该组件将使用此接口进行回调方法实现或将方法作为参数传递给C++组件.

我想要实现的高级示例:
C#组件:

public interface IDevice
{
   void OnDataAvailable(string data);
}

public class Device: IDevice
{
   [DllImport("sampleCPPLibrary.so")]
   private static extern int SetReceiver(IDevice receiver);  
   public void OnDataAvailable(string data)
   {
      Console.WriteLine(data);
   }
   public void Initialize()
   {
      SetReceiver(IDevice(this))
   }
}
Run Code Online (Sandbox Code Playgroud)

C++组件:

extern "C" {
void SetReceiver(IReceiver * receiver)
{
    receiver->OnDataAvailable(10);
}
}
Run Code Online (Sandbox Code Playgroud)

基本上,我想要做的只是将某种"回调"传递给C++组件,并在C++组件中发生某些事件时调用此"回调".

Mad*_* Vi 2

参阅从评论中查看此问题我构建了代码,其中 C# 调用 C 并为其提供回调委托。因此,它从 C 调用 C#,并传递附加的 int 类型参数。请参阅此处来自 endurox 项目的评论,并附加 c-callback.tar.gz 作为工作示例。