我刚刚开始使用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()));
}