调用PB写的DLL函数(ref string)

fullhappy 2010-02-26 11:19:56
大家好,我这2天碰到了这个问题,DLL是用PB写的,我调用里面的函数。分别定义如下:
========================函数在PB中引用========================
--函数定义
FUNCTION UnsignedInteger ICC_Open_Port(int Port) LIBRARY "ICC_32.DLL"
FUNCTION UnsignedInteger ICC_Close_Port( ) LIBRARY "ICC_32.DLL"
FUNCTION UnsignedInteger ICC_Verify(UnsignedInteger Lc,ref string Pin) LIBRARY "ICC_32.DLL"
--读卡函数 返回值第一个串为卡号
FUNCTION UnsignedInteger GetPersonalInfo(ref string Info) LIBRARY "ICC_32.DLL"

========================函数在Dephi中引用========================
function ICC_Open_Port(Port: LongInt): Cardinal; stdcall; external 'ICC_32.DLL';
function ICC_Close_Port(): Cardinal; stdcall; external 'ICC_32.DLL';
function ICC_Verify(Lc: Cardinal;var Pin: PChar): Cardinal; stdcall; external 'ICC_32.DLL';
function GetPersonalInfo(var Info: PChar): Cardinal; stdcall; external 'ICC_32.DLL';

========================Delphi引用===============================
在ICC_Open_Port和ICC_Close_Port都是正常的,而在ICC_Verify和GetPersonalInfo就是不能正常返回数值,且调用函数返回值也是失败。请教大家是否引用定义错了,传 动态数组参数?

紧急寻求大家帮助!谢谢
...全文
878 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
fox600123 2012-04-18
  • 打赏
  • 举报
回复

楼主是怎么解决的?小弟现在也面对一模一样的问题,请楼主指点一下,谢谢!!!
fullhappy 2011-10-10
  • 打赏
  • 举报
回复
这是去年的事情,已经都搞定了,其实比较简单的
l896993615 2011-07-04
  • 打赏
  • 举报
回复
ref 关键字来指明传递的是参数地址
l896993615 2011-07-04
  • 打赏
  • 举报
回复
ref 关键字来指明传递的是参数地址
柯本 2010-02-26
  • 打赏
  • 举报
回复
直接用pchar不用var pchar试试
(可能ref string只是一个字符串指针)
gyk120 2010-02-26
  • 打赏
  • 举报
回复
ref string应该是个数组吧?可能用指针的方式有问题,把Pin定义成数组可以吗?

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧