sData 是什么类,变量类型是什么
sData是自定义类型,里面都是double类型的变量,一共15个,是下面这样的:
public double Dis1 { get; set; }
public double Dis2 { get; set; }
public double Dis3 { get; set; }
public double Dis4 { get; set; }
public double Dis5 { get; set; }
……
@ttssrs: 感觉list应该一个一个传,应该是遍历list,然后每一个遍历过程执行一个WINAPI吧,这样才能对应float *Sour[15]
@WuRang: 请问应该怎么一个一个传呢?DLL中参数只有float *Sour[15]这一个参数呀。
@ttssrs: 是这样
foreach(sdata item in ListSdata) { winapi cal(item,pro,dis.....) }
需要注意sdata传到float *Sour[15]可能需要把double转成float
@WuRang: 您的意思是对sData中的每一个变量都调用一次cal?但是cal函数可能需要知道所有数据才能进行计算,而且float *Pro[12]是对输入的sData进行计算后返回的12列数据,后面几个变量也是cal函数返回的数据值,我应该怎么获取?
@ttssrs: 你也知道Pro是对输入的sData进行计算后返回的12列数据,那么list中存了很多sdata是不是要对应很多float *Pro[12],我的意思是说你的存储结构你清楚了么?如果单一是一个sdata,那它里面是15个double。现在用list<sdata>存了,那么这个list是个N*15的数据,N是list的项目数量。如果是这样,那么float *Pro[12]也需要放在同样大小的list中,每一个sdata对应一个pro
@WuRang: 这里明白了,那么float *Dis,float *Angle[2],int DLength这几个参数呢,它们是对所有sData进行计算会返回的结果,按您的意思应该是sData里的每一列都要回返一次这三个值吧?
@ttssrs: 我不知道你这个cal具体参数是做什么的,int DLength这个肯定不是返回值了,如果是返回值,传空的进去就行了假入float *Dis,float *Angle[2]都是返回值那么这么用
float []Pro= new float[12];
float dis;
float []angle = new float[2];
foreach(sdata item in ListSdata) { winapi cal(item,pro,dis.....) }
既然是返回,可能需要使用ref ,这个我没试过,
winapi cal(item,pro,dis.....)这样的话pro和dis的修改值应该不会返回,可以试试
winapi cal(item,ref pro,ref dis.....)
@ttssrs:还有一个“按您的意思应该是sData里的每一列都要回返一次这三个值吧?” 应该是list<sdata>里的每一列都要回返一次这三个值吧