我有一个 COM dll,在 C++/Cli 中使用,其中一个方法返回 IntPtr 类型。我想将其转换回本机对象指针。我该如何做?请帮忙解决。
IntPtr是一个整数类型,你需要先将其转换为指针类型:
IntPtr somePtr;
...
Mumble* fooPtr = (Mumble*)(void*)somePtr;
或者更易读的版本:
Mumble* fooPtr = (Mumble*)somePtr.ToPointer();
这个方法调用将在运行时被优化掉。
IntPtr
有一个ToPointer
方法,它返回一个void*
。调用此方法,然后使用reinterpret_cast
将此指针转换为正确的本机类型。
static_cast
应该是可以的。我不知道将 void
指针强制转换为另一种指针类型的好理由。 - Paul GrokeIntPtr
直接返回void指针..您可以在任何类型的本地C++指针中轻松转换它。IntPtr somePtr;
Mumble* fooPtr = (Mumble*)somePtr.ToPointer();
在这里,.ToPointer()
将返回一个void指针,现在您可以将其转换为自定义指针类型。