从托管类C#/ CLI访问非托管静态成员(本地C ++)

时间:2018-12-24 06:10:20

标签: c# c++ visual-studio clr

我刚刚开始使用CLI。在C ++中,我们可以访问静态成员,例如className :: static_field。但是,如果使用的是来自C#/ CLI的非托管代码...我们如何访问它?

我读了一些我们需要制作C ++项目的DLL并将其用于CLI / C#的地方。对于非静态成员,我可以使用该过程。但是在使用静态时,我看到了这些错误...

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

示例非托管类。

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()));
}

0 个答案:

没有答案