我正在尝试在 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();
给出空引用异常。为什么?