本地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 。