要调用一个delphi写的dll,接口函数如下
Type
TUserApply = Record
i_AreaCode: Integer; //分区号
str_UserNo: String[6]; //用户号
i_AlarmValue: Integer; //报警水量
i_InputValue: Integer; //充值限额
i_OverLimit: Integer; //透支限额
i_Times: Integer; //购水次数
i_Buy: Integer //本次购水量
End;
PUserApply = ^TUserApply;
//购水卡返写区结构
Type
TUserReturn = Record
str_Mark: String[2]; //返写标志
i_Left: Integer; //剩余水量
e_SumUsed: Extended; //表累计用水量
str_State: String[2]; //水表工作状态字
End;
PUserReturn = ^TUserReturn;
Function ReadUser_RFS(str_RunKey: String;UserApply: PUserApply;UserReturn: PUserReturn;Var i_Error: Integer):Boolean;stdcall; external 'LKWMRF.dll';
我在c++中定义对应结构体
struct USER_CARD_INFO
{
int nAreaCode;//分区号
char szUserNO[6];//用户号
int nAlarm; //报警水量
int nUpperLimit;//充值限额
int nOverdraw;//透支限额
int nTime; //购水次数
int nBuy; //本次购水量
};
typedef BYTE Extended[10];
struct USER_CARD_RETURN
{
char szMark[2];//返写标志
int nLeft;//剩余水量
Extended ldSumUsed;//表累计用水量
char szState[2];//水表工作状态字
};
typedef BOOL (__stdcall *PReadUser)(char*,USER_CARD_INFO*,USER_CARD_RETURN*,int&);
LoadLibrary,GetProcAddress执行都是正确的,调用,出现0xC0000005异常。
求大神!
------解决方案--------------------------------------------------------
我勒个去!写DLL那个人有问题吧,明知string是DELPHI专有的还将它定义到接口!这个DLL只供DELPHI使用
------解决方案--------------------------------------------------------
String[6]; //用户号
改成 :array [0..5] of AnsiChar;
其他同样改