问题
I have a .NET form, and a native code in my Visual Studio. The problem is: I can't declare a global instance of my .NET form in my native code, like this:
Editor^ maineditor;
It gives me this problem:
error C3145: 'EditorEntry' : global or static variable may not have managed type 'Cube3D::Editor ^'
回答1:
Instead of using a global static try making it a static method in a container type
ref class ManagedGlobals {
public:
static Editor^ maineditor = nullptr;
};
回答2:
wrap the handle with a gcroot<> struct
gcroot<Editor^> maineditor;
回答3:
You have your static class up top (referece: Can a class be declared static in c++?)
ref class ManagedGlobals abstract sealed {
public:
static Excel::Application^ xl;
};
Now just reference that class
ManagedGlobals::xl = gcnew Excel::Application();
来源:https://stackoverflow.com/questions/11419459/c-declaring-a-managed-variable-in-a-native-code