64位操作系統,java調用32位dll文件,實現身份證識別功能


我的操作系統是64位的。

身份證識別儀調用sdtapi.dll一開始使用如下方法,

//JNAReadCardDll cardDll=(JNAReadCardDll)Native.loadLibrary("C:\\Users\\maqing\\Workspaces\\MyEclipse 8.6\\IDCardManagerSwing\\sdtapi",JNAReadCardDll.class);

String sep = File.separator;

JNAReadCardDll cardDll=(JNAReadCardDll)Native.loadLibrary("sdtapi",JNAReadCardDll.class);

一直報java.lang.UnsatisfiedLinkError: Unable to load library 'sdtapi': 找不到指定的模塊。

后來在網上看到一篇https://wenku.baidu.com/view/5a4a2e202f60ddccda38a01a.html(強烈推薦,程序拷下來可正常運行)

好心人做的身份證識別儀項目,使用的

System.loadLibrary("sdtapi");

closeJN=new JNative("sdtapi","SDT_ClosePort");

這種方式,運行application,報以下錯誤,然后就開始了漫長的64位操作系統加載32sdtapi.dll文件的過程。Can't load IA 32-bit .dll on a AMD 64-bit platform

 

查找的資料太多,大底的解決流程就是:

首先把sdtapi.dll文件放在C:\Windows\System32

64位的還要放在C:\Windows\SysWOW64

然后regsvr32 sdtapi.dll

 

 

 

run以管理員身份運行

regsvr32 sdtapi.dll

regsvr32 C:\Windows\SysWOW64\sdtapi.dll

 

 

嘗試了DirectX修復系統工具,還是報一樣的錯誤。

換了64位別的電腦,報同樣的錯誤。搭了個虛擬機環境,32位winxp,報

 

開始懷疑是不是dll的問題了。

受到網上一篇文章的啟發(感謝這篇實驗文,找不到鏈接了T-T),更換tomcat或者JDK,application貌似跟tomcat沒有什么關系,不管那么多了,反正都試一下,32位的jdk以及tomcat都安裝了一遍,一開始找不到配置的地方,最后在

 

 

 

 

 

然后程序就正常了,用這種方法,使用Native.loadLibrary這種方式的程序也不報原來那個錯了。

總之,感覺為了解決問題走的彎路都是值得的,但是網上查不到相關的資料,你需要遇到一個問題查找一堆資料解決一個問題,有的時候走的路是錯誤的你也不知道。感謝那些無私分享自己經驗的IT工作者們,向你們學習,同時也想留下點資料供后來者以及自己查詢。

 

參考資料:https://wenku.baidu.com/view/5a4a2e202f60ddccda38a01a.html

還有很多,沒有保存鏈接,來回重啟電腦解決問題,都沖沒了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM