日期:2014-05-18  浏览次数:20783 次

C#中怎样将double指针传给C++的DLL
在一个C++写的DLL中,有一个以struct指针为参数的接口函数,例如
struct SourceData
{
  double* pData;
  int nSize;
}
现在要在C#中调用这个函数,相应的struct定义为
public struct SourceData
{
  public double[] pData;
  public int nSize;
}
但现在有一个问题C#的double数组必须要转换为非托管的数组才行保证数组中值不变化,对于这样的结构,怎样定义pData?

谢谢

------解决方案--------------------
public struct SourceData 

public IntPtr pData; 
public int nSize; 
}

传入的时候自己通过Marshal把数组写到IntPtr的内存。
传出的时候通过Marshal的Read方式把内存内容读到数组就可以了。

自己转就可以了。
------解决方案--------------------
http://www.codeproject.com/useritems/unmanaged_memory_pointers.asp