C#调用delphi生成的dll文件,传递二维数组有关问题求大神解
C#调用delphi生成的dll文件,传递二维数组问题求大神解.
Delphi 方面:
1、结构体定义:
type
PDay_Period=^TDay_Period;
TDay_Period= record
Start_time : array [0..15,0..1] of BYTE;//
End_time : array [0..15,0..1] of BYTE; //
end;
2、方法定义:
function YsnNet_SetWeekPower_Group( buf:PDay_Period);
3、C#调用:
Day_Period day_Period = new Day_Period();
day_Period.Start_time=new byte[16,2];
day_Period.Start_time[0,0] = 0x08;
day_Period.Start_time[0,1] = 0x30;
day_Period.End_time = new byte[16, 2];
day_Period.End_time[0,0]=0x17;
day_Period.End_time[0, 1] = 0x30;
ADKNetTools.SetWeekPowerGroup(day_Period);
这样调用失败,提示错误:“对 PInvoke 函数“WindowsFormsApplication1!Test.ADKNetTools::SetWeekPowerGroup”的调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配。”
本人猜测是二维数组参数传递问题,希望有路过的大神不吝赐教,不甚感激。
------解决方案--------------------
这个鸟问题也好意思拿出来问?
Delphi 方面:
1、结构体定义:
type
PDay_Period=^TDay_Period;
TDay_Period= record
Start_time : array [0..15,0..1] of BYTE;//
End_time : array [0..15,0..1] of BYTE; //
end;
2、方法定义:
function YsnNet_SetWeekPower_Group( buf:PDay_Period);
3、C#调用:
Day_Period day_Period = new Day_Period();
day_Period.Start_time=new byte[16,2];
day_Period.Start_time[0,0] = 0x08;
day_Period.Start_time[0,1] = 0x30;
day_Period.End_time = new byte[16, 2];
day_Period.End_time[0,0]=0x17;
day_Period.End_time[0, 1] = 0x30;
ADKNetTools.SetWeekPowerGroup(day_Period);
这样调用失败,提示错误:“对 PInvoke 函数“WindowsFormsApplication1!Test.ADKNetTools::SetWeekPowerGroup”的调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配。”
本人猜测是二维数组参数传递问题,希望有路过的大神不吝赐教,不甚感激。
------解决方案--------------------
这个鸟问题也好意思拿出来问?