[英]Using a C++ dll in C#
我正在嘗試使用C#應用程序中用C ++編寫的dll。 我有C ++ dll(Cyclone物理引擎)的第三方源代碼,並且不想手動將其移植到C#。
在C ++項目中
我將其更改為輸出dll。 我將其更改為使用/ clr標志。 我將其更改為使用多線程調試DLL(/ MDd),因為那是唯一與/ clr兼容並進行編譯的。
在C#項目中
我添加了對dll的引用。 我正在使用旋風命名空間。
最初,名稱空間下絕對沒有任何內容。 我認為這是因為在C ++代碼中,所有類都聲明為沒有訪問修飾符,並且默認為private。 因此,對於“ Particle”類,我將定義更改為:
public class Particle
{
//...
}
現在,我可以從C#代碼中成功聲明一個類型為Particle的變量。 但是,智能感知和對象瀏覽器將粒子報告為結構(?),並且根本不包含任何方法。 C ++代碼在“ public:”訪問修飾符之后聲明了一堆方法,因此我不知道問題出在哪里。
例如,
public:
void integrate(real duration);
我究竟做錯了什么?
粒子類不是托管類,因此將其視為結構。 您需要使用ref關鍵字來對其進行管理和垃圾收集。 您還需要對引用它的其他所有類進行相同的操作,這可能是一個問題。 我認為最好的解決方案是創建一個在內部使用Particle類的托管包裝類。 然后,.net可以引用該包裝器類。
看這里 :
嘗試使用ref關鍵字聲明c ++類:
public ref class Particle
您對COM Interop有參考嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.