C/C++想通过CLR传递C#的对象,可以通过指针的方式传递。
那就需要知道C#的指针与对象如何转换:
命名空间:
using System.Runtime.InteropServices;
C# 对象转成指针地址:
Object objectHandle= new Object(); //生成对象
GCHandle gcHandle = GCHandle.Alloc(objectHandle); //非托管内存
IntPtr ptr = GCHandle.ToIntPtr(gcHandle); // 转成int指针对象
int handle = ptr.ToInt32(); // 指针转成32位地址
C# 指针地址转成对象:
int handle = 0x12345678; //指针地址
IntPtr ptr = (IntPtr)handle; //转成Int指针对象
GCHandle gcHandle = GCHandle.FromIntPtr(ptr); //非托管内存
Object extend = (Object)gcHandle.Target; //转换成对象