我有两个组件:
- 运行在Ubuntu操作系统上的.Net Core应用程序。
- C++共享库(.so)
现在我希望C++组件能够调用.Net Core方法,可以通过将接口传递给C++组件,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++组件中发生某些事件时调用此“回调”。
Marshal.GetDelegateForFunctionPointer
。您可以尝试使用它来调用 C 风格的回调函数。 - Sergey.quixoticaxis.Ivanov