簡體   English   中英

用於本機C ++的C ++ / CLI包裝器,用作C#中的引用

[英]C++/CLI wrapper for native C++ to use as reference in C#

標題解釋。 我有原生的C ++ dll,我正在編寫C ++ / CLI包裝器,而這些包裝器又將作為參考在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()方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM