我有COM dll我在C ++ / Cli中使用,这个COM dll中的一个方法返回IntPtr 我想将其转换回本机对象指针。我怎么能这样做?请放入
答案 0 :(得分:12)
IntPtr是一个整数类型,您需要先将其转换为指针类型:
IntPtr somePtr;
...
Mumble* fooPtr = (Mumble*)(void*)somePtr;
或者更易阅读的版本:
Mumble* fooPtr = (Mumble*)somePtr.ToPointer();
方法调用将在运行时进行优化。
答案 1 :(得分:8)
IntPtr
有ToPointer
方法,返回void*
。调用此方法,然后使用reintepret_cast
将此指针强制转换为正确的本机类型。
答案 2 :(得分:2)
我想修改Hans Passant's answer,
IntPtr
直接返回void指针..您可以在任何类型的本机C ++指针中轻松地转换它。
IntPtr somePtr;
Mumble* fooPtr = (Mumble*)somePtr.ToPointer();
此处.ToPointer()
将返回void指针,现在您可以转换为自定义指针类型。