要调用一个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异常。
求大神!

解决方案 »

  1.   

    LoadLibrary  你没载入进来吧
    !dll名称错误 或者 getprocaddress的参数名称!
      

  2.   

    先看LoadLibrary,GetProcAddress是不是都成功,返回值
      

  3.   


    LoadLibrary  GetProcAddress 执行都是正确的~问题肯定是处在参数那块了~我找了个参数简单的函数,执行是没问题的
      

  4.   

    确定GetProcAddress返回的值不是NULL ??
      

  5.   

    主要是delphi的接口设计的不对。string是delphi的有的~