标题解释。我有 native C++ dll,我正在为其编写 C++/CLI 包装器,这些 dll 又将作为引用导入到 C# 中。
问题是在 C# 中我看不到包装器中的类(从 DLL 导入)。
我应该使用哪些关键字以及如何重新声明我的原生 C++ 对象以在 C# 中可见?
最佳答案
好的,教程。您有一个想要向 C# 公开的 C++ 类 NativeClass
。
class NativeClass {
public:
void Method();
};
1) 创建一个 C++/CLI 项目。链接到您的 C++ 库和头文件。
2) 创建一个封装类来公开你想要的方法。示例:
#include "NativeClass.h"
public ref class NativeClassWrapper {
NativeClass* m_nativeClass;
public:
NativeClassWrapper() { m_nativeClass = new NativeClass(); }
~NativeClassWrapper() { this->!NativeClassWrapper(); }
!NativeClassWrapper() { delete m_nativeClass; }
void Method() {
m_nativeClass->Method();
}
};
3) 在 C# 项目中添加对 C++/CLI 项目的引用。
4) 在 using 语句中使用包装器类型:
using (var nativeObject = new NativeClassWrapper()) {
nativeObject.Method();
}
using 语句确保 Dispose() 被调用,它立即运行析构函数并销毁 native 对象。否则,您将出现内存泄漏,并且可能会死得很惨(不是您,程序)。注:The Dispose() method is magically created for you .
关于c# - 用于 native C++ 的 C++/CLI 包装器,可在 C# 中用作引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10223186/