Ответ 1
Вместо использования глобальной статической попытки сделать ее статическим методом в типе контейнера
ref class ManagedGlobals {
public:
static Editor^ maineditor = nullptr;
};
У меня есть .NET-форма и собственный код в моей Visual Studio. Проблема в том, что я не могу объявить глобальный экземпляр моей .NET-формы в моем родном коде, например:
Editor^ maineditor;
Это дает мне эту проблему:
error C3145: 'EditorEntry' : global or static variable may not have managed type 'Cube3D::Editor ^'
Вместо использования глобальной статической попытки сделать ее статическим методом в типе контейнера
ref class ManagedGlobals {
public:
static Editor^ maineditor = nullptr;
};
заверните дескриптор с помощью gcroot < > struct
gcroot<Editor^> maineditor;
У вас есть статический класс вверху (referece: Может ли класс объявляться статическим в С++?)
ref class ManagedGlobals abstract sealed {
public:
static Excel::Application^ xl;
};
Теперь просто укажите этот класс
ManagedGlobals::xl = gcnew Excel::Application();