0

アンマネージド ポインターをマネージド オブジェクトに変換する必要があります。以下はコードです

ラッパー.cpp

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

ここUnmanagedSubtractionに、 Wrapper.hファイルUnmanagedAlgebraComputationのクラスがあります。

SubtractMultiplyWrapper(UnmanagedSubtraction *unmanagedSubtraction)私のWrapper.cppファイルに実装されている私のwrapper.hファイルのメソッドです。

問題は、マネージ オブジェクトを に渡したいのです obj->Subtraction(unmanagedSubtraction)unmanagedSubtraction、私のネイティブ C ポインターです。

次のようにエラーをスローします

'AlgebraCSharp::AlgebraComputation::Subtraction': パラメータ 1 を 'UnmanagedSubtraction *' から 'AlgebraCSharp::SubtractComputation ^' に変換できません

これに関連する解決策があれば教えてください。

4

2 に答える 2

1

キャストはできません: 変換 (関連するコンテンツを管理対象オブジェクトにコピーする) またはラップ (1 つのオブジェクトをもう 1 つのオブジェクトのラッパーにする) のいずれかを行う必要があります。

于 2013-06-05T14:27:45.887 に答える
1

ネイティブ ポインターをマネージド オブジェクトに直接変換することはできません。まず、ネイティブ ポインターを IntPtr に変換する必要があります。次に IntPtr を管理対象オブジェクトに。

于 2013-06-06T05:52:56.787 に答える