我希望非托管 C++ 代码将 C# 函数作为回调调用。我有一个围绕非托管代码的 CLI/C++ 类。此 CLI/C++ 类的实例存在于 C# 中。
C# 代码类似于以下文本。我有一个指向 callBack 方法的(委托)函数指针。我有 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 项目。会不会有依赖问题?
我在某些网站上看到了对“编组数据”或使用“互操作”的引用。我不明白它们是如何工作的,或者从我所看到的任何东西中它们到底做了什么,这些是我应该使用的吗?