我有一个带有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**
参数运行该方法。
答案 0 :(得分:0)
void **是指向指针的指针。所以,你将它声明为“void ** name”。我认为这应该有效。