该读卡器提供了一个dll,里面有七个接口,但是这个dll是c写的,现在我要在delphi中调用它,我准备用静态的方式调用这个dll,现在的问题是delphi调用c/vc写的dll是要不要改写或者添加什么代码?毕竟数值类型的定义还是有些不同的.下面我把这个dll的说明贴出来,请大侠指点一下该怎么做,谢谢!1.  组成文件:
ABCMMCAPI.dll接口2.  安装方法
将ABCMMCAPI_R.rar拷贝到Windows下解包,将解出的所有dll文件、lib文件、头文件(.H文件)拷贝到应用程序路径下。3.接口说明
API提供了7个接口。(注意:本接口仅可在单线程下调用。)1)函数名称:IC_InitLib
函数功能:初始化厂商PKCS11库。
格式:int IC_InitLib([in]char *libname,[in]char *tokenLabel,[in]char *password)
参数说明:char *libname  厂商PKCS11动态库名称。
     char *tokenLabel IC卡硬件Token名称。
     char *password   登陆Token的密码(此处应为NULL)
返回值:见客户端接口函数返回值统一定义。2)函数名称:IC_CloseLib
函数功能:关闭PKCS11库,释放PKCS11库资源。
格式:int IC_CloseLib()
参数说明:无。
返回值:见客户端接口函数返回值统一定义。3)函数名称:IC_Login
函数功能:签到。
格式:int IC_Login([in]char *password)。
参数说明:char *password  IC卡用户密码。
返回值:见客户端接口函数返回值统一定义。4)函数名称:IC_Logout
函数功能:签退。
格式:int IC_Logout()
参数说明:无。
返回值:见客户端接口函数返回值统一定义。5)函数名称:IC_ChangePin
函数功能:修改IC卡用户密码。
格式:int IC_ChangePin([in]char *oldpin,[in]char *newpin)
参数说明:char *oldpin  IC卡用户旧密码
     char *newpin  IC卡用户新密码
返回值:见客户端接口函数返回值统一定义。
说明:根据PKCS11规范要求,更改用户密码需首先签到,因此使用本函数时,应确保已经调用IC_Login签到。6)函数名称:IC_Sign
函数功能:用IC卡进行数字签名。
格式:int IC_Sign([in]BYTE indata[],unsigned long dataLen,[out]BYTE SignedMsg[],[out]int *SignedLen)
参数说明:BYTE indata[]      原始数据。
     unsigned long dataLen  原始数据长度。
     BYTE SignedMsg[]  签名数据。
     int *SignedLen      签名数据长度。
返回值:见客户端接口函数返回值统一定义。7)函数名称:IC_GetCertificate
函数功能:返回IC卡中用户证书中单个项。
格式:int IC_GetCertificate([out]BYTE ItemCode[],[out]char *ItemOper)
参数说明:BYTE ItemCode []      技术监督局企业代码
     char * ItemOper        企业操作员号
返回值:见客户端接口函数返回值统一定义。

解决方案 »

  1.   

    我想应该不需要填加什么代码,只要你把参数的类型定义成跟DLL文件里面的一样就可以了。
    int IC_InitLib([in]char *libname,[in]char *tokenLabel,[in]char *password)
    Function IN_Ininlib(Pchar libName,Pchar TokenLabel,Pchar PassWord):Integer;
    这样应该就可以了。你自己试试看。
      

  2.   

    Function IN_Ininlib(Pchar libName,Pchar TokenLabel,Pchar PassWord):Integer;Stdcall;
    far;External 'ABCMMCAPI.dll' name 'IN_Ininlib';记得把ABCMMCAPI.dll放在你的应用软件的目录下
    然后看看他的例程就OK了。我做过一个那种银行的读写卡机lk602的,
    跟你这个有点相似,都要用到dll文件。
    希望这个对你有用。