C++/CLI 包装器,供本机C++用作 C# 中的参考
C++/CLI wrapper for native C++ to use as reference in C#
Title解释道。我有本机C++ dll,我正在为其编写C++/CLI 包装器,这些 dll 又将在 C# 中作为参考导入。
问题是在 C# 中我看不到包装器(从 DLL 导入)中的类。
我应该使用哪些关键字以及如何重新声明我的本机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() 方法是为你神奇地创建的。
相关文章:
- static_assert在宏中,但也可以扩展到可以用作函数参数的东西
- 将转换字符键入 int 以用作向量C++的索引
- 为什么 int 类型的枚举类值不能用作 int
- 我应该在C++中将这些结构用作参数化构造函数吗?
- 如何定义在用作函数参数时工作的类模板的转换
- 如何使自定义类型在unordered_map中用作键
- 哪些存储了不完整类型的 STL 数据结构可以用作类成员?
- 将类用作类似枚举或具有特定值的类
- 我无法从 C# 获取 PInvoke 的输入参数以C++ DLL 以用作 IntPtr 的输出
- 是否可以将不可复制的成员用作使对象不可复制的替代方法?
- 任意大小的 constexpr 数组是否可以用作 switch 语句中的案例?
- Lambda可以用作非类型模板参数吗
- 类专用化,没有用作专用化模板参数的类的模板参数
- 如何在 C/C++ 中将CAP_REWINDPAGE用作 TWAIN API?
- 如何将共享指针用作函数参数
- 附加使用 Struct 作为"multikey"并将 std::vector 用作映射值的映射
- "operator()"在重载运算符方法中是什么意思,在priority_queue(STL)中用作C++中的比较器?
- 我可以初始化 const 实例,以便我可以将其用作 const 来初始化数组吗?
- 是否可以将指向未实例化的对象的指针用作C++中的变量?
- 指向重载静态成员的函数指针 - 在unique_ptr中用作自定义删除器