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