0

C++ と C++/CLI を混在させる clr オプションを使用した MFC プロジェクトがあります。また、メソッドを持つ安全でない C# dll (C# dll のみ、メソッドの戻り値とパラメーターしか知らない) もあります。void OpenCamera(Model model, void** camera)

この dll を C# プロジェクト (安全でない) で使用する場合、次のように簡単に使用できます。

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 ** 名」として宣言します。これでうまくいくと思います。

于 2013-06-10T09:54:42.020 に答える