我需要将非托管指针转换为托管对象。 下面是代码将本地指针强制转换为托管对象
Wrapper.cpp
_declspec(dllexport) int UnmanagedAlgebraComputation::SubtractMultiplyWrapper(UnmanagedSubtraction *unmanagedSubtraction)
{
AlgebraCSharp::AlgebraComputation^ obj= AlgebraCSharp::AlgebraComputation::GetObject;
return obj->Subtraction(unmanagedSubtraction);
}
这里UnmanagedSubtraction
,UnmanagedAlgebraComputation
是我Wrapper.h文件中的类。
SubtractMultiplyWrapper(UnmanagedSubtraction *unmanagedSubtraction)
是我的中的方法wrapper.h这是在我的Wrapper.cpp文件中实现的文件。
问题是我想将管理对象传递给obj->Subtraction(unmanagedSubtraction)
,但unmanagedSubtraction
是我的本地C指针。
它引发错误的
'AlgebraCSharp :: AlgebraComputation ::减法':不能从转换 参数1 'UnmanagedSubtraction *' 来 'AlgebraCSharp :: SubtractComputation ^'
如果您有任何与此相关的解决方案,请让我知道。
Thanks for the Reply.You are Right.We can not convert native pointer into managed object directly.First我们必须将本地指针转换为IntPtr,然后将该IntPtr转换为ManagedObject。 – user2372247