0

我有一个带有 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中抛出异常,但不知道是什么异常

如何将void**c++/cli 中的 a 传递给 c# 方法?pin_ptr 和interior_ptr 都不能运行带void**参数的方法。

4

1 回答 1

0

void** 是指向指针的指针。因此,您将其声明为“void ** name”。我认为这应该可行。

于 2013-06-10T09:54:42.020 回答