C ++ / CLI包装为本地C ++与C#参考使用 [英] C++/CLI wrapper for native C++ to use as reference in C#

查看:196
本文介绍了C ++ / CLI包装为本地C ++与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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆