我需要将非托管指针转换为托管对象。 以下是代码
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 :: Subtraction':无法转换 参数1从'UnmanagedSubtraction *'到 'AlgebraCSharp :: SubtractComputation ^'
如果您有任何相关解决方案,请与我们联系。
答案 0 :(得分:1)
你无法强制转换:你必须转换(将相关内容复制到托管对象)或换行(让一个对象成为另一个对象的包装器)。
答案 1 :(得分:1)
我们无法直接将Native Pointer转换为Managed object。 首先,我们必须将Native Pointer转换为IntPtr。 然后IntPtr到托管对象。