请教:C#中如何调用C语言编写的形参是二级指针的函数?
大家好,我是写C/C++的,对于C#不是太了解,由于项目急,只看了一天C#方面的资料就开始用C#编程的,现想请教一下大家一个C#方面的问题,谢谢大家的解答。
情况是这样的,我写了一个C的dll动态库,名叫DllRFID.dll,库中封装了一个函数:int API_ISO180006C_CustomCmd(IN HANDLE hSerialComm, IN ISO180006CCMDTYPE cmdType, IN UISO180006CCMDPARAM *puCmdParam,
OUT SISO180006CCUSTOMCMDRESULT **ppCustomCmdResult);
那我在C#中要如何编写,是不是要写成这样?
[DllImport("DllRFID.dll", EntryPoint = "API_ISO180006C_CustomCmd", SetLastError = true)]
public static extern Int32 API_ISO180006C_CustomCmd(IntPtr hSerialComm, Byte cmdType, /* UISO180006CCMDPARAM *puCmdParam */ IntPtr puCmdParam, /*OUT SISO180006CCUSTOMCMDRESULT **ppCustomCmdResult*/ IntPtr ppCustomCmdResult);
还有,调用的代码是怎么写啊?这两天我上网搜到了一些资料,但都没有说到C的二级指针在C#中要怎么写,具体用的时候要怎么调用,哪位高人可以给出一段代码吗?非常感谢!
[解决办法]
不是所有类型都可以跨语言调用的。
[解决办法]
不需要使用指针。在C#中定义好兼容的结构体,用Marshal分配空间,再传递给dll。
[解决办法]
C#的指针自己去MSDN找指针的说明。
[解决办法]
别指望在C#里使用指针了,哪怕是所谓的unsafe状态下指针也是限制极多。
[解决办法]
在C#里不叫指针,而叫引用
用unsafe是可以显示调用指针的,但不建议这么做
[解决办法]
所谓“二级指针”其实就相当于二维数组。
[解决办法]
TStudent p = null;fun1(out p);
[解决办法]
void fun1(TStudent **pp){ (*p) = malloc(sizeof(TStudent)); ...}