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

关于结构体和指针问题
C#程序,需要调用一个DLL,DLL给出的一个函数,参数是指向结构体数组的指针。
C++函数的实现
struct   FPOINT   {   double   x;double   y;};
void   DlgTest::OnButton(){  
FPOINT   st[2]={0.1,0.2,0.99,0.33};
TestFunc((LONG)   st,2)
}

现在希望能在C#中实现改类似过程。。
不知道如何传递这个struct指针,忘达人们指教啊。。。

------解决方案--------------------
// 没有测试环境,只能乱猜几个
// 试试看使用ref传,ref传递的实际为指针,但是不知道是否可行
this.axClient1.TestFunc(ref pt, 3);

// 试试看将起始数据的指针传递。因为数组结构中,数据都是连续的
// 所以传递第一个数据的指针过去
fixed (double* px = &(pt[0].x))
{
this.axClient1.TestFunc(px, 3);
}