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

问题描述 投票:8回答:1

我有2个组件: - 在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))
   }
}

C ++组件:

extern "C" {
void SetReceiver(IReceiver * receiver)
{
    receiver->OnDataAvailable(10);
}
}

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

c# c++ ubuntu .net-core cross-platform
1个回答
1
投票

请参阅注释中的See this issue我构造了C#调用C并为其提供回调委托的代码。因此,从C开始,它调用C#,并传递额外的int类型参数。 See comments here from endurox project,并附上c-callback.tar.gz作为工作示例。

© www.soinside.com 2019 - 2024. All rights reserved.