![](/img/trans.png)
[英]How do I call a function in a C++ Dll from C# that has void* callback and object parameter
[英]using unsafe c#dll in c++/cli,one method of the c#dll has a parameter void**
我有一个带有clr选项的MFC项目,用于混合C ++和C ++ / CLI。 而且我还有一个不安全的C#dll(只有一个C#dll,我只知道该方法的返回值和参数),其中有一个方法void OpenCamera(Model model, void** camera)
在C#项目中使用此dll(不安全)时,可以像这样轻松使用:
void* tmpCamera;
a->OpenCamera(model, &tmpCamera);
我是C ++ / CLI的新手,所以我写了(c ++ / cli):
A^ a=gcnew A(); // build a object of Class A of the C# dll
void* tmpCamera; // maybe wrong, there is no void* in c++cli
a->OpenCamera(model, &tmpCamera); // compiles OK. But cannot run OpenCamera method
在dll中引发异常,但不知道是什么异常
其他方式:
pin_ptr<void> tmpCamera; // I think it can run
a->OpenCamera(model, (void**)&tmpCamera); // compiles OK. But also cannot run
在dll中引发异常,但不知道是什么异常
如何将c ++ / cli中的void**
传递给c#方法? pin_ptr和interior_ptr都不能运行带有void**
参数的方法。
void **是指向指针的指针。因此,您将其声明为“ void ** name”。我认为这应该可行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.