本地C ++的C ++ / CLI包装器,用作C#中的参考
标题解释。 我有本地的C ++ DLL,我正在编写C ++ / CLI包装,这将反过来将被导入C#作为参考。
问题是,在C#中,我看不到包装(从DLL导入)中的类。
我应该使用什么关键字,以及如何重新声明我的本机C ++对象在C#中可见?
好的,教程。 你有一个C ++类的NativeClass
,你想暴露给C#。
class NativeClass { public: void Method(); };
1)创build一个C ++ / CLI项目。 链接到你的C ++库和头文件。
2)创build一个包装类,公开你想要的方法。 例:
#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语句中使用包装types:
using (var nativeObject = new NativeClassWrapper()) { nativeObject.Method(); }
using语句确保调用Dispose(),它立即运行析构函数并销毁本地对象。 否则你会有内存泄漏,可能会死得可怕(不是你,程序)。 注意: Dispose()方法神奇地为你创build 。