C++-CLI プロジェクトで C# クラスを使用しようとしていますが、Visual Studio では、C# オブジェクトへのハンドル (^) を関数内のローカル スコープでしか宣言できません。私がそれを機能させる唯一の方法は、ハンドルへのグローバルポインターを宣言することでした:
SUTAdapter::Form1^ *ptForm1;
しかし、関数内にオブジェクトを作成し、そのアドレスをグローバル ポインターに渡すと、次のようになります。
SUTAdapter::Form1^ form1;
form1 = gcnew SUTAdapter::Form1();
ptForm1 = &form1;
(*ptForm1)->incCounter(0);
関数が終了し、他の C++-CLI 関数内で incCounter 関数を使用しようとすると、オブジェクトがなくなったように見えます (デバッガーは this == null と表示します)。C++-CLI で C# コードのグローバル ハンドルを持つ方法はありますか? 何らかの理由でグローバルハンドルが禁止されていると思いますが、私にはアイデアがありません。これを行う必要があります。ありがとうございました。
編集:
*ptForm1 = gcnew SUTAdapter::Form1();
null 参照例外を発生させます。なんで?