0

我需要将非托管指针转换为托管对象。下面是代码

包装器.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.cpp 文件中实现的wrapper.h文件中的方法。

问题是我想将托管对象传递给 obj->Subtraction(unmanagedSubtraction)unmanagedSubtraction的本机 C 指针。

它将错误抛出为

'AlgebraCSharp::AlgebraComputation::Subtraction':无法将参数 1 从 'UnmanagedSubtraction *' 转换为 'AlgebraCSharp::SubtractComputation ^'

如果您有任何与此相关的解决方案,请告诉我。

4

2 回答 2

1

您不能强制转换:您必须转换(将相关内容复制到托管对象中)或包装(让一个对象成为另一个对象的包装器)。

于 2013-06-05T14:27:45.887 回答
1

我们不能直接将本机指针转换为托管对象。首先,我们必须将 Native Pointer 转换为 IntPtr。然后 IntPtr 到托管对象。

于 2013-06-06T05:52:56.787 回答