jzt998apbdevctrl.cpp 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. #include "stdafx.h"
  2. #include "JZT998APBDevCtrl.h"
  3. CDevDllLoad::CDevDllLoad(char * dllpath)
  4. {
  5. /**********************************************************************/
  6. Dl_info path_info;
  7. dladdr("CDevDllLoad",&path_info);
  8. char str_FilePath[256]{0};
  9. memcpy(str_FilePath,path_info.dli_fname,strlen(path_info.dli_fname));
  10. //printf("first_str_FilePath=%s\n",str_FilePath);
  11. char *pLastSlath=strrchr(str_FilePath,'/');
  12. *pLastSlath=0;
  13. memset(m_dllpath,0x00,sizeof(m_dllpath));
  14. strcpy(m_dllpath,str_FilePath);
  15. //strncpy(m_dllpath, dllpath, sizeof(m_dllpath));
  16. char *a="/keba/";
  17. strncat(m_dllpath,a,strlen(a));
  18. strncat(m_dllpath, dllpath, strlen(dllpath));
  19. // LOG4VTM(INFO,("CDevDllLoad creat function()!"));
  20. if(!InitDLL())
  21. {
  22. //记日志
  23. return;
  24. }
  25. }
  26. CDevDllLoad::~CDevDllLoad()
  27. {
  28. FreeDLL();
  29. }
  30. int CDevDllLoad::InitDLL()
  31. {
  32. if(nullptr != dp_dev)
  33. {
  34. FreeDLL();
  35. }
  36. dp_dev = dlopen(m_dllpath, RTLD_LAZY);
  37. if (nullptr == dp_dev)
  38. {
  39. //记日志
  40. return false;
  41. }
  42. apiFPIGetErrorInfo = (char* (*)(int))dlsym(dp_dev, "WELLGetErrorInfo");
  43. apiFPIDeviceInit = (int (*)(void))dlsym(dp_dev, "WELLDeviceInit");
  44. apiFPIDeviceClose = (int (*)(void))dlsym(dp_dev, "WELLDeviceClose");
  45. apiFPIGetFingerprintAndMatch = (int (*)( char *, int ))dlsym(dp_dev, "WELLGetFingerprintAndMatch");
  46. apiFPIGetFeature = (int (*)(int , int , char *))dlsym(dp_dev, "WELLGetFeature");
  47. apiFPIGetTemplate = (int (*)(int , int , char *))dlsym(dp_dev, "WELLGetTemplate");
  48. apiFPIFingerImageDecompress = (int (*)(char *, int,char *))dlsym(dp_dev, "WELLFingerImageDecompress");
  49. apiFPIGetVersion = (int (*)(char *, char *))dlsym(dp_dev, "WELLGetVersion");
  50. apiFPIMatch = (int (*)(char *, char *, int))dlsym(dp_dev, "WELLMatch");
  51. apiFPIImg2Bmp = (int (*)(int, char *))dlsym(dp_dev, "WELLImg2Bmp");
  52. apiFPIBmp2Feature = (int (*)(int, char *, char *, int *))dlsym(dp_dev, "WELLBmp2Feature");
  53. apiFPIBmp2Template = (int (*)(int, char *, char *, char *, char *, int *))dlsym(dp_dev, "WELLBmp2Template");
  54. apiFPICancel = (void (*)())dlsym(dp_dev, "WELLCancel");
  55. if (nullptr == apiFPIGetErrorInfo || nullptr == apiFPIDeviceInit || nullptr == apiFPIDeviceClose || nullptr == apiFPIGetFingerprintAndMatch ||
  56. nullptr == apiFPIGetFeature || nullptr == apiFPIGetTemplate || nullptr == apiFPIFingerImageDecompress || nullptr == apiFPIMatch)
  57. {
  58. //记日志
  59. return false;
  60. }
  61. return true;
  62. }
  63. int CDevDllLoad::FreeDLL()
  64. {
  65. dlclose(dp_dev);
  66. return true;
  67. }
  68. int CDevDllLoad::FPIDeviceInit()
  69. {
  70. if (apiFPIDeviceInit==nullptr)
  71. {
  72. return -3;
  73. }
  74. return apiFPIDeviceInit();
  75. }
  76. int CDevDllLoad::FPIDeviceClose()
  77. {
  78. if (apiFPIDeviceClose==nullptr)
  79. {
  80. return -3;
  81. }
  82. return apiFPIDeviceClose();
  83. }
  84. char* CDevDllLoad::FPIGetErrorInfo(int nRetCode)
  85. {
  86. if (apiFPIGetErrorInfo==nullptr)
  87. {
  88. return nullptr;
  89. }
  90. return apiFPIGetErrorInfo(nRetCode);
  91. }
  92. int CDevDllLoad::FPIGetVersion(char *psRegBuf, char *psVerBuf)
  93. {
  94. if (apiFPIGetVersion==nullptr)
  95. {
  96. return -3;
  97. }
  98. return apiFPIGetVersion(psRegBuf,psVerBuf);
  99. }
  100. int CDevDllLoad::FPIImg2Bmp(char *psImgPath)
  101. {
  102. if (apiFPIImg2Bmp==nullptr)
  103. {
  104. return -3;
  105. }
  106. return apiFPIImg2Bmp(0,psImgPath);
  107. }
  108. int CDevDllLoad::FPIBmp2Feature(char *psImgPath, char *psTZ, int *lpLength)
  109. {
  110. if (apiFPIBmp2Feature==nullptr)
  111. {
  112. return -3;
  113. }
  114. return apiFPIBmp2Feature(0x63, psImgPath, psTZ, lpLength);
  115. }
  116. int CDevDllLoad::FPIBmp2Template(char *psImgPath1, char *psImgPath2, char *psImgPath3, char *psMB, int *lpLength)
  117. {
  118. if (apiFPIBmp2Template==nullptr)
  119. {
  120. return -3;
  121. }
  122. return apiFPIBmp2Template( 0x63, psImgPath1, psImgPath2, psImgPath3, psMB, lpLength);
  123. }
  124. int CDevDllLoad::FPIMatch(char *psMB,char *psTZ, int iLevel)
  125. {
  126. if (apiFPIMatch==nullptr)
  127. {
  128. return -3;
  129. }
  130. return apiFPIMatch(psMB, psTZ, iLevel);
  131. }
  132. int CDevDllLoad::FPICancel()
  133. {
  134. if (apiFPICancel==nullptr)
  135. {
  136. return -3;
  137. }
  138. apiFPICancel();
  139. return 1;
  140. }