C++在本机代码中声明托管变量

Mig*_*l P 10 variables global native managed visual-c++

我有一个.NET表单,以及我的Visual Studio中的本机代码.问题是:我不能在我的本机代码中声明我的.NET表单的全局实例,如下所示:

Editor^ maineditor;
Run Code Online (Sandbox Code Playgroud)

它给了我这个问题:

error C3145: 'EditorEntry' : global or static variable may not have managed type 'Cube3D::Editor ^'
Run Code Online (Sandbox Code Playgroud)

Jar*_*Par 12

而不是使用全局静态尝试使其成为容器类型中的静态方法

ref class ManagedGlobals {
  public:
  static Editor^ maineditor = nullptr;
};
Run Code Online (Sandbox Code Playgroud)


小智 8

用gcroot <> struct包装句柄

gcroot<Editor^> maineditor;
Run Code Online (Sandbox Code Playgroud)

  • 比创建虚拟包装类更有魅力,更干净:-) (2认同)