Как использовать управляемую переменную в качестве глобального в Visual C ++?

Я пишу приложение MFC в Visual C ++ и использую одну C # lib. Вы должны объединить неуправляемые и управляемые классы и переменные. Мне нужно, чтобы некоторые управляемые классы из C # помещались и читались в / из глобальной области видимости, чтобы быть доступными из всего приложения. Я попробовал (простой пример):

App.h:
class MyClass1 {
public:
gcroot<Namespace::Something^> var;
};

class MyClass2 {
public:
static gcroot<Namespace::Something^> var;
};

extern MyClass1 *cl1;

App.cpp
MyClass1 *cl1 = new MyClass1();

Когда я использую «cl1-> var», я получаю System.NullReferenceException, MyClass2 возвращает ошибку

error LNK2020: unresolved token (0A0003BE) "public: static struct gcroot ...
error LNK2001: unresolved external symbol "public: static struct gcroot ...

Пожалуйста, помогите мне, как использовать «Something ^ var» во всем приложении?

0

Решение

Как и с любым другим статическим членом c ++, вам нужно определить его в дополнение к объявлению. Итак, в App.cpp в области пространства имен вам необходимо:

gcroot<Namespace::Something^> MyClass2::var;
3

Другие решения


По вопросам рекламы [email protected]