c# - 从托管类 C#/CLI 访问非托管静态成员(本机 C++)
问题描述
我刚开始使用 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()));
}
解决方案
推荐阅读
- java - 如何在 JUnit 和 Mockito 中测试 2 条日志消息
- android - ImageButton 在按下和释放时不会改变“背景”
- excel - Excel 公式:如何连接多个匹配结果地址(而不是值)
- r - 使用所有可能的组合将宽数据重塑为长数据
- docker - 如何拦截来自 docker 容器的 UDP 流量?
- r - 过滤一列以仅在有值时显示,并删除 R 中的其他列(R,dplyr,lubridate)
- java - 尝试在没有比较器的情况下添加树集中时,StringBuffer 不给出 ClassCastException
- python - 使用 beautifulsoup 查找段落标签中唯一单词的数量
- docker - 如何在使用 su -s 时设法解决问题?
- visual-studio-code - 如何在vscode中隐藏选项卡关闭按钮[X]?