问题描述
大家好,我现在想把如下C++的函数移植到C#下使用,函数原型如下:HANDLERtOpenSharedMemory(DWORDDesiredAccess,BOOLbInheritHandle,LPCTSTRlpName,VOID**location);我查到了是使用DllImport来调用C++中的DLL,但主要对函数的最后一个形参“VOID**location”比较疑惑,到底该怎么处理?之前我在网上找了好久也没有找到答案,只找到了char**、int**等的处理办法,有劳各位,非常感谢!
解决方案
解决方案二:
指针都可以是System.IntPtr
解决方案三:
只想指针的指针,难道要用refIntPtr?
解决方案四:
还是那句话,C#是支持指针的,直接用指针写,unsafe代码写void**即可,其他的任何转换方式你都得查,只有用指针写是最傻瓜化的方式
解决方案五:
好的,谢谢大家了。我就按照3l说的,用unsafe吧。
解决方案六:
用二维数组接收
解决方案七:
这明显是打开共享内存,其中location是个输出参数,返回所打开的共享内存的地址,直接IntPtroutLoc=IntPtr.Zero;RtOpenSharedMemory(xxx,xxx,xxx,refoutLoc);
时间: 2024-09-22 16:25:20