c#调用动态库的问题,已经折磨我好几天了!请帮助,谢谢!!!
我现在用C#调用vc写的动态库,这个动态库在delphi环境下调用是没有问题的,但是在c#环境下调用就会出现问题:
我所用的函数readCheckCard在delpi下的定义日下:
function readCheckCard(comport:integer;
UserIDNO:pchar;
Var CmdByte:integer;
Var MeterType:integer;
MeterNo:pchar;
Var seq:integer;
Var TotalPurQty:double;
Var TotalUsedQty:double;
Var residualQty:double;
Var loadTimes:integer;
Var lastPurQty:double;
Var MonthQty:PDoublearray;
Var ReiresidualQty:double;
Var WarnQty:double;
Var CoemptionQty:double;
Var BalDate:integer;
Var impluseNum:integer;
Var WorkStatus:integer;
Var BasicReading:double;
Var RecentlyUsedQty:double;
ChangeBatteryTime:pchar;
MeterTime:pchar;
Var measuredecimal:integer;
isw:pchar):integer;stdcall;far;external 'StarWS42.dll';
在c#下的定义如下:
public static extern int readCheckCard(int comport, StringBuilder UserIDNO, ref int CmdByte, ref int MeterType, StringBuilder MeterNo, ref int seq, ref double TotalPurQty,ref double TotalUsedQty, ref double residualQty, ref int loadTimes, ref double lastPurQty, ref double MonthQty, ref double ReiresidualQty, ref double WarnQty, ref double CoemptionQty,ref int BalDate, ref int impluseNum, ref int WorkStatus, ref double BasicReading, ref double LastUsedQty, StringBuilder ChangeBatteryTime, StringBuilder MeterTime, ref int measuredecimal,StringBuilder isw);
但是我在调试程序的时候,发现StringBuilder ChangeBatteryTime和StringBuilder MeterTime的值是正确的,但是StringBuilder UserIDNO和StringBuilder MeterNo的值始终为NULL,但是这两个值在delphi下是可以读出来的,并且这个函数的返回值是零(为零表示成功)。不知道是为什么呀?
请帮助,万分感谢!