Доступ к неуправляемому статическому члену (нативный C ++) из управляемого класса C # / CLI - PullRequest
0 голосов
/ 24 декабря 2018

Я только начал работать с CLI.В C ++ мы можем получить доступ к статическим членам, таким как className :: static_field.Но в случае использования неуправляемого кода из C # / CLI ... как мы к нему обращаемся?

Я прочитал некоторые места, в которых нам нужно создать DLL-файл проекта C ++, и использовать это в CLI / C #.Для нестатических членов я могу использовать, используя процесс.Но при использовании static я вижу эти ошибки ...

unresolved token (0A0007CC) "public: static int unManaged::a" (?a@unManaged@@2HA)
error LNK2001: unresolved external symbol "public: static int unManaged::a" (?a@unManaged@@2HA)
fatal error LNK1120: 2 unresolved externals

Пример класса UnManaged ..

class UnManaged {
int data;

static int a;
public:
UnManaged () {
    data = 0;
}
static int getStat() {
    return a;
}
static void setStat(int val) {
  a = val;
}
int getData() {
    return data;
}
void setData(int val) {
    data  = val;
}
};

Я хочу получить доступ из класса CLI, как показано ниже ...

void Main(array<String^>^ args) {
    UnManaged s;
    UnManaged ::setStat(25); //throwing linker error
    MessageBox::Show(System::Convert::ToString(s.getData()));
    s.setData(100);
    MessageBox::Show(System::Convert::ToString(s.getData()));
}
...