C# 如何将IntPtr转换为本机c++;对象

C# 如何将IntPtr转换为本机c++;对象,c#,.net,interop,c++-cli,C#,.net,Interop,C++ Cli,我在C++/Cli中使用COM dll,此COM dll中的一个方法返回IntPtr 我想将其转换回本机对象指针。我怎么能做到?请输入IntPtr是整数类型,您需要首先将其转换为指针类型: IntPtr somePtr; ... Mumble* fooPtr = (Mumble*)(void*)somePtr; 或更可读的版本: Mumble* fooPtr = (Mumble*)somePtr.ToPointer(); 方法调用将在运行时进行优化。IntPtr有一个ToPo

我在C++/Cli中使用COM dll,此COM dll中的一个方法返回IntPtr
我想将其转换回本机对象指针。我怎么能做到?请输入IntPtr是整数类型,您需要首先将其转换为指针类型:

  IntPtr somePtr;
  ...
  Mumble* fooPtr = (Mumble*)(void*)somePtr;
或更可读的版本:

  Mumble* fooPtr = (Mumble*)somePtr.ToPointer();

方法调用将在运行时进行优化。

IntPtr
有一个
ToPointer
方法,该方法返回一个
void*
。调用此方法,然后使用
reinepret\u cast
将此指针强制转换为正确的本机类型。

我想修改,
IntPtr
直接返回空指针。。您可以在任何类型的本机C++指针中轻松地进行转换。
IntPtr somePtr;
Mumble* fooPtr = (Mumble*)somePtr.ToPointer();

这里
.ToPointer()
将返回void指针,现在您可以转换为自定义指针类型。

您需要提供COM方法和“本机对象”的声明。我认为在这种情况下使用
静态转换应该可以。我不知道有什么好的理由将无效指针转换为另一种指针类型。