当前位置: 代码迷 >> Delphi >> vc 调用delphi dll遇到的错误
  详细解决方案

vc 调用delphi dll遇到的错误

热度:6134   发布时间:2013-02-26 00:00:00.0
vc 调用delphi dll遇到的异常
要调用一个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;
其他同样改
  相关解决方案