标题说明。我有本机 C++ dll,我正在为其编写 C++/CLI 包装器,这些 dll 反过来将作为参考导入到 C# 中。
问题是在 C# 中我看不到包装器中的类(从 DLL 导入)。
我应该使用哪些关键字以及如何重新声明我的本机 C++ 对象以在 C# 中可见?
好的,教程。您有一个NativeClass
要向 C# 公开的 C++ 类。
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() 被调用,它立即运行析构函数并销毁本机对象。否则,您将出现内存泄漏,并且可能会死得很惨(不是您,程序)。注意:Dispose() 方法是为您神奇地创建的。