现有外部dll的一个函数 function(int a, ref int b, out IntPtr c), 输出:c 在dll 的函数里定义为一个结构体数组的指针的指针,输出:b为这个结构体数组的大小, 假设结构体为 S {int x, int y, int z}
请问在调用这个函数前 怎样初始化 C ,以及调用完后怎样拿到其中某个S结构体的成员X,Y和Z谢谢

解决方案 »

  1.   

    s[] s1 = ....
    int ptr=marshal UnsafeAddrOfPinnedArrayElement(s1, 0)
      

  2.   

    C#语言不讲指针,指针是C、C++中的东西
      

  3.   

    谁说C#没指针...
    没写过unsafe代码别瞎说.这种的我一般用unsafe做.
    非unsafe的...参考1楼.
      

  4.   

    谁说C#没指针... 
    没写过unsafe代码别瞎说.这种的我一般用unsafe做. 
    非unsafe的...参考1楼.
      

  5.   

    请问1楼 怎么拿到这个数组的首地址?
    因为我调用API 后 拿到的是存放这个数组首地址的指针的地址,即指针的指针,设dll中函数原型为function(int a, int * b, S ** c), b为拿到的数组的大小,C为存放S结构体数组首地址的指针的地址。
    请问如何把输出C 转换为 我所需要的数组的首地址?这样我就可以用您所说的int ptr=marshal UnsafeAddrOfPinnedArrayElement(s1, b)命令拿到每个结构体了,万分感谢