如何将C#功能指针传递到CLI/C 代码中



我希望不受管理的C 代码将C#函数称为回调。我在非托管代码周围包裹了CLI/C 类。C#中存在此CLI/C 类的实例。

C#代码看起来像以下文本。我有一个(委托)函数指向回调方法。我有CLI_CLASS的CLI实例。我想在AddValuechangedCallback函数中以某种方式给它函数指针。

public Setup(){
    tempFUNC myFuncObj = new tempFUNC(callBack)
    CLI_class c=new CLI_class();
    c.addValueChangedCallBack(myFuncObj)
}
public delegate void tempFUNC(float x);
void callBack(float x){
....
}

然后在CLI代码中我想做这样的事情:

void addValueChangedCallback(void (*ManipCallBack)(float)){
   unmanagedCPPCLASS.addValueChangedCallback(ManipCallBack)
}

如何将功能指针变成C 指针(*)?另外,我无法在C /CLI项目中引用C#项目,因为C#类已经引用并使用C /CLI项目。会有依赖性问题吗?

我已经在某些站点上看到了"编制数据"或使用" Interop"的参考。我不明白它们是如何工作的,或者他们从我所看到的任何事情中做什么,这些是我应该使用的吗?

您可以互相参考并使用system.interopservices.runtime.marshal.getFunctionpointerpointerfordelegate获取功能指针。

但是,如果我是您,我将使C#class Comvisible comvisible,并通过COM接口直接调用C 代码C#方法。这样,就不需要C /CLI包装器。当您经历时,包装纸总是很痛苦。C /CLI有其用途,但是创建包装纸不是。

相关内容

  • 没有找到相关文章

最新更新