Я пишу приложение 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» во всем приложении?
Как и с любым другим статическим членом c ++, вам нужно определить его в дополнение к объявлению. Итак, в App.cpp в области пространства имен вам необходимо:
gcroot<Namespace::Something^> MyClass2::var;