1. 程式人生 > >JNA呼叫32dll和64位dll的相容解決

JNA呼叫32dll和64位dll的相容解決

最近在學習jna,發現dll檔案能能否成功呼叫取決於jdk位數。而且有個情況是位數不對應的話報的錯是

"Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'testx64': 找不到指定的模組。"

它為什麼是直接無視位數不符合的dll?仔細一想,程式碼搜尋dll檔案時是按名字來的,那放2個同名的test.dll一個是64位的一個是32位的,自然就能搜到與自己對應的,這不就可以方便的解決相容問題,連程式碼都不用改了。

但是還有一個問題,一個資料夾內檔案時不能重名的,怎麼放同名不同位的檔案?原來jna呼叫dll不單會搜尋專案下的dll,也會搜尋在系統環境Path裡各個檔案,在裡面填自己建兩個檔案分別放同名不同位的檔案就行了