從網絡上搜索資料和參考后,決定使用JNA(另有jni,jnavitate);
注意點:
1. 32位jdk對應32位dll(包含其自身依賴dll),64位對應64位
2. 引入JNA依賴jar包,放置入口dll於項目根目錄處
3. 所調dll方法與java對應的數據類型匹配(重要),不匹配會導致中斷,或結果不正確;
--數據類型也不算太多,試試基本就出來了,而且一般dll接口會告訴你對應的數據類型,只需要找到對應的java類型即可。
public interface Dll extends Library { public int GetRead(String src, byte[] dest); } public static void main(String[] args) { Dll instance = (Dll) Native.loadLibrary("E:\\luna\\dll\\CSDataIntf.dll", Dll.class); if (instance != null) { String src = "00000000003501000420180"; byte[] dest = new byte[1000]; int res = instance.GetRead(src, dest); try { String res11 = new String(dest,"UTF-8"); System.out.println(res11); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }