我有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 ++组件中发生某些事件时调用此“回调”。
请参阅注释中的See this issue我构造了C#调用C并为其提供回调委托的代码。因此,从C开始,它调用C#,并传递额外的int类型参数。 See comments here from endurox project,并附上c-callback.tar.gz作为工作示例。