C ++ / CLI包装为本地C ++与C#参考使用 [英] C++/CLI wrapper for native C++ to use as reference in C#
问题描述
标题解释说。我有我写C ++ / CLI包装为本地C ++动态链接库,这将反过来会在C#中导入作为参考。
Title explains. I have native C++ dlls that I'm writing C++/CLI wrappers for, which will in turn will be imported in C# as reference.
问题是,在C#中我没有看到在包装我有类(从DLL进口)。
The problem is that in C# I don't see the classes I have in wrapper (imported from DLL).
我应该用和怎么样的关键字再次声明我的原生C ++对象在C#中变得可见?
What keywords should I use and HOW to re-declare my native C++ objects to become visible in C#?
推荐答案
好吧,教程。你有一个C ++类 NativeClass
要暴露给C#。
Ok, tutorial. You have a C++ class NativeClass
that you want to expose to C#.
class NativeClass {
public:
void Method();
};
1)创建一个C ++ / CLI项目。链接到你的C ++库和头文件。
1) Create a C++/CLI project. Link to your C++ library and headers.
2)创建一个公开所需的方法的包装类。例如:
2) Create a wrapper class that exposes the methods you want. Example:
#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#项目。
3) Add a reference to your C++/CLI project in your C# project.
4)using语句中使用的包装类型的
4) Use the wrapper type within a using statement:
using (var nativeObject = new NativeClassWrapper()) {
nativeObject.Method();
}
using语句确保Dispose()方法被调用,它会立即运行析构函数,破坏原生对象。否则就会出现内存泄漏,并可能会死可怕的(不是你的程序)。注:的Dispose()方法创建奇迹般地为你的。
这篇关于C ++ / CLI包装为本地C ++与C#参考使用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!