![](/img/trans.png)
[英]AccesViolationException in C++/CLI Wrapper for native 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.