DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: lilm3m0
今日帖子: 2
在线用户: 10
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 hklh2000 (凯哥) ▲▲▲▲▲ -
普通会员
2020/2/18 3:31:41
标题:
求助delphi 调用C++ dll 求助 浏览:1233
加入我的收藏
楼主: 求助delphi 调用C++ dll 求助

#ifndef _N_IDREADERAPI_H_
#define _N_IDREADERAPI_H_   1


#define  IDREADER_WINAPI __stdcall


#define  IDREADER_DLLEXPORT _declspec(dllexport)


    /**********
    *
    * 函数名:     ReadIDCardComm
    * 功能:         读取身份证函数
    * 作者:         shz
    * 日期:         2015-6-1
    * 备注:      出参 编码为unicode 两个字节一个汉字
    *          照片解码后 会在当目录生成一个名"ZP.bmp"的身份证图片
    * 参数说明:
    *    int iPort,  COM口 是1-9 USB口是1001-1016
    *    unsigned char *ucName,  //姓名
    *    int &iNamelen,
    *    unsigned char *ucSex,   //性别
    *    int &iSexLen,
    *    unsigned char *ucIDNo,  //身份证号
    *    int &iIDNoLen,
    *    unsigned char *ucNation, //民族
    *    int &iNationLen,
    *    unsigned char *ucBirthday, //生日
    *    int &iBirthdayLen,
    *    unsigned char *ucAddress, //地址
    *    int &iAddressLen,
    *    unsigned char *ucGrantDept, //签发机关
    *    int &iGrantDeptLen,
    *    unsigned char *ucUserLifeBegin, //有效开始日期
    *    int &iUserLifeBeginLen,
    *    unsigned char *ucUserLifeEnd, //有效结尾日期
    *    int &iUserLifeEndLen,
    *    unsigned char *errMsg,  //错误信息
    *    int &iErrMsgLen,
    *    int nTimeOut          //超时时间
    * 返回值 0 成功 -1 失败 -2超时 -3取消
    *
    **********/


extern "C"  IDREADER_DLLEXPORT int IDREADER_WINAPI  ReadIDCardComm(
          int iPort,
          unsigned char *ucName,
          int &iNamelen,
          unsigned char *ucSex,
          int &iSexLen,
          unsigned char *ucIDNo,
          int &iIDNoLen,
          unsigned char *ucNation,
          int &iNationLen,
          unsigned char *ucBirthday,
          int &iBirthdayLen,
          unsigned char *ucAddress,
          int &iAddressLen,
          unsigned char *ucGrantDept,
          int &iGrantDeptLen,
          unsigned char *ucUserLifeBegin,
          int &iUserLifeBeginLen,
          unsigned char *ucUserLifeEnd,
          int &iUserLifeEndLen,
          unsigned char *errMsg,
          int &iErrMsgLen,
          int nTimeOut);

    /**********
    *
    * 函数名:     StopReadIDCardComm
    * 功能:         取消身份证读取
    * 作者:         shz
    * 日期:         2015-6-1
    * 备注:      
    *
    **********/


extern "C"  IDREADER_DLLEXPORT void IDREADER_WINAPI StopReadIDCardComm(void);

extern "C"  IDREADER_DLLEXPORT void IDREADER_WINAPI SetPicPathComm(const char *szFilePath);

typedef struct ID_INFO
{
    char aName[50];
    char aSex[5];
    char aNation[20];
    char aBrithday[10];
    char aAddress[140];
    char ID[20];
    char aOrgan[50];
    char date[30];
    char aPassNum[20];
    char aPassCount[6];
    char aCategory[20];
}ID_INFO;
extern "C"  IDREADER_DLLEXPORT int IDREADER_WINAPI ReadIDCardCommEx (
          int iPort,
          ID_INFO &info,
          char *errMsg,
          int & iErrMsgLen,
          int nTimeOut);


typedef struct FOREIGN_INFO
{
    char aEName[140];
    char aSex[20];
    char ID[40];
    char aNationCode[6];
    char aCName[30];
    char aUserLifeBegin[16];
    char aUserLifeEnd[16];
    char aBrithday[16];
    char aCardVersion[4];
    char aCategoryCode[8];
    char aCardType[50];
    char aSaveAred[6];
}FOREIGN_INFO;
extern "C"  IDREADER_DLLEXPORT int IDREADER_WINAPI ReadForeignIDCard (
          int iPort,
          FOREIGN_INFO &info,
          char *errMsg,
          int & iErrMsgLen,
          int nTimeOut);

extern "C"  IDREADER_DLLEXPORT int IDREADER_WINAPI GetIDCardType (int iPort,char *errMsg);
#endif






如何用delphi 动态调用


procedure TForm1.Button1Click(Sender: TObject);
var
th:Thandle;
tp:Tfarproc;
begin
 th:= loadlibrary('Idreaderapicomm.dll'); //装载dll
 if th>0 then
 begin
 // memo1.Lines.Insert(0,'装载 Idreaderapicomm.dll 成功!');
  tp:=getprocaddress(th,pchar('ReadIDCardComm'));
  if assigned(tp) then
  begin
   memo1.Text := tpXxxxxxxxxxx 怎么写
  end;

 end
 else
 begin
  showmessage('Idreaderapicomm.dll 没有找到!');
 end;


end;


需要加什么声明。。。求助如何动态调用。。。
----------------------------------------------
-
作者:
男 zyp1984 (小李他妈的飞刀) ★☆☆☆☆ -
普通会员
2020/2/18 10:20:37
1楼: 看样子是身份证的。这个十大厂家都DEMO,如果没有的找一个有的就行了。我用的新中新,和国腾,神思的都用过,用法一样。你上官网找找新中新的。
----------------------------------------------
山外青山楼外楼,能人背后有能人弄..
作者:
男 bahamut8348 (leonna) ★☆☆☆☆ -
普通会员
2020/2/18 11:19:44
2楼: var
  tp: function (....): integer; stdcall; /// 把c里那个函数定义翻译过来
begin
  ....
  if assigned(tp) then
    tp(...); /// 调用
end;

结构和函数自己翻译就行了
----------------------------------------------
--
作者:
男 hklh2000 (凯哥) ▲▲▲▲▲ -
普通会员
2020/2/18 14:46:38
3楼: 是啊, 现在小区防控了, 让人员自主刷身份证进入。 又要测体温, 又要检查身份工作量太大了。。一个上万人进出。。
----------------------------------------------
-
作者:
男 hklh2000 (凯哥) ▲▲▲▲▲ -
普通会员
2020/2/18 14:55:40
4楼: C/C++            Delphi
ABC            TABC
ACCEL            TAccel
ATOM            TAtom
BITMAP            TBitMap
BITMAPCOREHEADER           TBitmapCoreHeader
BITMAPCOREINFO            TBitmapCoreInfo
BITMAPFILEHEADER          TBitmapFileHeader
BITMAPINFO            TBitmapInfo
BITMAPINFOHEADER          TBitmapInfoHeader
BOOL            Bool
CBT_CREATEWND            TCBT_CreateWnd
CBTACTIVATESTRUCT         TCBTActivateStruct
CHAR            Char
CHAR*            PChar
CLIENTCREATESTRUCT         TClientCreateStruct
COLORREF            TColorRef
COMPAREITEMSTRUCT         TCompareItemStruct
COMSTAT            TComStat
CREATESTRUCT            TCreateStruct
CTLINFO            TCtlInfo
CTLSTYLE            TCtlStyle
CTLtype            TCtltype
DCB            TDCB
DDEAACK            TDDEAck
DDEADVISE            TDDEAdvise
DDEDATA            TDDEData
DDEPOKE            TDDEPoke
DEBUGHOOKINFO            TDebugHookInfo
DELETEITEMSTRUCT          TDeleteItemStruct
DEVMODE            TDevMode
DOUBLE            Double
DRAWITEMSTRUCT            TDrawItemStruct
DWORD            LongInt
ENUMLOGFONT            TEnumLogFont
EVENTMSG            TEventMsg
FARPROC          TFarProc
FIXED            TFixed
FLOAT            Single
GLYPHMETRICS            TGlyphMetrics
HANDLE            THandle
HANDLETABLE            THandleTable
HARDWAREHOOKSTRUCT          THardwareHookStruct
HELPWININFO            THelpWinInfo
INT            Integer
KERNINGPAIR            TKerningPair
LOGBRUSH            TLogBrush
LOGFONT            TLogFont
LOGPALETTE            TLogPalette
LOGPEN            TLogPen
LONG            LongInt
LONG DOUBLE            Extended
LONG INT            LongInt
LPSTR            PChar
LPWSTR            PWideChar
MAT2            TMat2
MDICREATESTRUCT            TMDICreateStruct
MEASUREITEMSTRUCT          TMeasureItemStruct
MENUITEMTEMPLATE          TMenuItemTemplate
MENUITEMTEMPLATEHEADER     TMenuItemTemplateHeader
METAFILEPICT            TMetaFilePict
METAHEADER            TMetaHeader
METARECORD            TMetaRecord
MINMAXINFO            TMinMaxInfo
MOUSEHOOKSTRUCT            TMouseHookStruct
MSG            TMsg
MULTIKEYHELP            TMultiKeyHelp
NCCALCSIZE_PARAMS            TNCCalcSize_Params
NEWTEXTMETRIC            TNewTextMetric
OFSTRUCT            TOFStruct
OUTLINETEXTMETRIC            TOutlineTextMetric
PAINTSTRUCT            TPaintStruct
PALETTEENTRY            TPaletteEntry
PANOSE            TPanose
PATTERN            TPattern
POINTFX            TPointFX
PSTR            PChar
PWSTR            PWideChar
RASTERIZER_STATUS          TRasterizer_Status
RGBQUAD            TRGBQuad
RGBTRIPLE            TRGBTriple
SEGINFO            TSegInfo
SHORT            SmallInt
SHORT INT            SmallInt
SIZE            TSize
TEXTMETRIC            TTextMetric
TPOINT            TPoint
TRECT            TRect
TTPOLYCURVE            TTTPolyCurve
TTPOLYGONHEADER           TPolygonHeader
UINT            Word
UNSIGNED            Word
UNSIGNED CHAR            Byte
UNSIGNED INT            Word
UNSIGNED LONG            LongInt(DWORD)
UNSIGNED LONG INT           LongInt
UNSIGNED SHORT            Word
UNSIGNED SHORT INT         Word
VOID*            Pointer
WINDOWPLACEMENT           TWindowPlacement
WINDOWPOS            TWindowPos
WNDCLASS            TWndClass
WORD            Word
----------------------------------------------
-
作者:
男 xuchuantao (暗黑天使) ★☆☆☆☆ -
普通会员
2020/2/20 17:56:21
5楼: 身份证读卡器SDK是通用的,网上找个可用的就可以了,都是一样的.
不行你用我发的这个也是一样的.
此帖子包含附件:xuchuantao_2020220175549.zip 大小:10.03M
----------------------------------------------
按此在新窗口浏览图片
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行89.84375毫秒 RSS