C ++ / CLI包装器本地C ++如C#参考使用C ++ / CLI包装器本地C ++如C#参考

2019-05-13 14:32发布

标题解释。 我有我写C ++ / CLI包装的,这将反过来会在C#中导入为参考本地C ++动态链接库。

问题是,在C#中我没有看到在包装我有类(从DLL进口)。

什么样的关键字,我应该使用和如何重新申报我的原生C ++对象成为在C#中可见?

Answer 1:

好吧,教程。 你有一个C ++类NativeClass要暴露给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 ++ / CLI项目C#项目添加。

4)using语句中使用的包装类型:

using (var nativeObject = new NativeClassWrapper()) {
    nativeObject.Method();
}

using语句确保Dispose()方法被调用,它会立即运行析构函数,破坏原生对象。 否则就会出现内存泄漏,并可能会死可怕的(不是你的程序)。 注: 该Dispose()方法被神奇地为您创建 。



文章来源: C++/CLI wrapper for native C++ to use as reference in C#
标签: c# c++ dll c++-cli