调用delphi dll遇到的问题

toucheme 2013-01-24 05:19:47
要调用一个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异常。
求大神!
...全文
165 6 点赞 打赏 收藏 举报
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
toucheme 2013-01-30
主要是delphi的接口设计的不对。string是delphi的有的~
  • 打赏
  • 举报
回复
toucheme 2013-01-25
引用 4 楼 VisualEleven 的回复:
引用 3 楼 toucheme 的回复:引用 1 楼 sha_jinhao 的回复: LoadLibrary 你没载入进来吧 ! dll名称错误 或者 getprocaddress的参数名称! 引用 2 楼 oyljerry 的回复: 先看LoadLibrary,GetProcAddress是不是都成功,返回值 LoadLibrary GetPro……
这个能确定,我都是习惯性做检查的~
  • 打赏
  • 举报
回复
Eleven 2013-01-25
引用 3 楼 toucheme 的回复:
引用 1 楼 sha_jinhao 的回复: LoadLibrary 你没载入进来吧 ! dll名称错误 或者 getprocaddress的参数名称! 引用 2 楼 oyljerry 的回复: 先看LoadLibrary,GetProcAddress是不是都成功,返回值 LoadLibrary GetProcAddress 执行都是正确的~问题肯定是处在参数那块了~我找了……
确定GetProcAddress返回的值不是NULL ??
  • 打赏
  • 举报
回复
toucheme 2013-01-25
引用 1 楼 sha_jinhao 的回复:
LoadLibrary 你没载入进来吧 ! dll名称错误 或者 getprocaddress的参数名称!
引用 2 楼 oyljerry 的回复:
先看LoadLibrary,GetProcAddress是不是都成功,返回值
LoadLibrary GetProcAddress 执行都是正确的~问题肯定是处在参数那块了~我找了个参数简单的函数,执行是没问题的
  • 打赏
  • 举报
回复
oyljerry 2013-01-24
先看LoadLibrary,GetProcAddress是不是都成功,返回值
  • 打赏
  • 举报
回复
jimette 2013-01-24
LoadLibrary 你没载入进来吧 ! dll名称错误 或者 getprocaddress的参数名称!
  • 打赏
  • 举报
回复
相关推荐
发帖
VC/MFC
加入

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2013-01-24 05:19
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……