C++/CLI 包装器,供本机C++用作 C# 中的参考

本文关键字:C++ 用作 参考 本机 CLI 包装 | 更新日期: 2023-09-27 18:31:31

Title解释道。我有本机C++ dll,我正在为其编写C++/CLI 包装器,这些 dll 又将在 C# 中作为参考导入。

问题是在 C# 中我看不到包装器(从 DLL 导入)中的类。

我应该使用哪些关键字以及如何重新声明我的本机C++对象以在 C# 中可见?

C++/CLI 包装器,供本机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(),这会立即运行析构函数并销毁本机对象。否则,您将有内存泄漏,并且可能会死得很惨(不是您,程序)。注意:Dispose() 方法是为你神奇地创建的。