在c ++ / cli中使用不安全的c#dll,c#dll的一个方法有一个参数void **

时间:2013-06-10 09:46:05

标签: c# c++-cli

我有一个带有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**参数运行该方法。

1 个答案:

答案 0 :(得分:0)

void **是指向指针的指针。所以,你将它声明为“void ** name”。我认为这应该有效。