该文章已经过时,可参考最新博文链接 https://blog.csdn.net/qq_36874292/article/details/89467749
只推荐一种方法,jni方式你放弃吧,很繁琐
jnative好用,但是文件路径等等还是有问题,不能像java一样去使用。也不推荐
jna调用,意外之喜很好用的。
简而言之,jna需要自己定义java接口,这个类的方法和dll文件一样,你必须十分清楚dll文件的结构和里面的方法以及返回值,参数。
注意事项:java调用dll 需要jdk32位版本
附上 jna接口(和dll文件对应的函数名和方法一致,):
package com.dewell.jnativetest;
import com.sun.jna.Library;
import com.sun.jna.Native;
/**
* @author 作者 :xinyao
* @version 创建时间:2018年4月23日 下午5:06:27
*/
public interface Jna extends Library {
Jna instanceDll = (Jna) Native.loadLibrary("EDI_Middleware", Jna.class);
public void initial_DM();
public String gen_edi2carrier(Double d);
}
jnaTest:
package com.dewell.jnativetest;
/**
* @author 作者 :xinyao
* @version 创建时间:2018年4月23日 下午5:10:36
*/
public class JnaTest {
public static void main(String[] args) {
Double double1 = new Double(123456789);
Jna.instanceDll.initial_DM();
String gen_edi2carrier = Jna.instanceDll.gen_edi2carrier(double1);
System.out.println(gen_edi2carrier);
}
}
文章参考链接:
https://blog.csdn.net/jswawawa/article/details/53738554