繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM