2013-06-05 77 views
0

我需要將非託管指針轉換爲託管對象。 下面是代碼將本地指針強制轉換爲託管對象

Wrapper.cpp

_declspec(dllexport) int UnmanagedAlgebraComputation::SubtractMultiplyWrapper(UnmanagedSubtraction *unmanagedSubtraction) 
{ 
    AlgebraCSharp::AlgebraComputation^ obj= AlgebraCSharp::AlgebraComputation::GetObject; 
    return obj->Subtraction(unmanagedSubtraction); 
} 

這裏UnmanagedSubtractionUnmanagedAlgebraComputation是我Wrapper.h文件中的類。

SubtractMultiplyWrapper(UnmanagedSubtraction *unmanagedSubtraction)是我的中的方法wrapper.h這是在我的Wrapper.cpp文件中實現的文件。

問題是我想將管理對象傳遞給obj->Subtraction(unmanagedSubtraction),但unmanagedSubtraction是我的本地C指針。

它引發錯誤的

'AlgebraCSharp :: AlgebraComputation ::減法':不能從轉換 參數1 'UnmanagedSubtraction *' 來 'AlgebraCSharp :: SubtractComputation ^'

如果您有任何與此相關的解決方案,請讓我知道。

回答

1

您不能強制轉換:您必須轉換(將相關內容複製到託管對象)或換行(將一個對象作爲另一個的包裝)。

+0

Thanks for the Reply.You are Right.We can not convert native pointer into managed object directly.First我們必須將本地指針轉換爲IntPtr,然後將該IntPtr轉換爲ManagedObject。 – user2372247

1

我們不能直接將原生指針轉換爲託管對象。 首先,我們必須將本地指針轉換爲IntPtr。 ,然後將IntPtr轉換爲託管對象。