Fork me on GitHub

Java使用JNative调用DLL库

  1. 编写测试DLL文件,源文件参照JNA调用用的DLL文件。地址:http://www.cnblogs.com/vevy/p/9076941.html

  2. (很重要)右键项目 --> 属性 --> 常规 --> 选择MFC的使用 --> 改成在静态库中使用MFC,在.h头文件的函数声明中添加 extern "C" 标识, .h文件部分代码

#define JNADLL extern "c" _declspec(dllexport)
extern "C" JNADLL int add(int x, int y);
  1. 导入Jnative.jar包和JNativeCpp.dll文件到项目目录下,如果是Linux系统,导入的为libJNativeCpp.so而不是JNativeCpp.dll。下载地址:https://download.csdn.net/download/w139074301/10427312

  2. 编写测试类JnativeTest,代码如下

public class JnativeTest {
	public static void main(String[] args) {
		JNative.setLoggingEnabled(true); //显示日志
		try {
			JNative c = new JNative("MyDLL", "add"); //新建JNative对象,第一个参数为需要调用的DLL文件位置,第二个参数为调用的方法名
			c.setRetVal(Type.INT); //设定返回值
			c.setParameter(0, 1); //设定第一个参数的值
			c.setParameter(1, 2); //设定第二个参数的值
;			c.invoke(); //执行调用
			System.out.println("java调用dll动态库的add方法后执行的结果为:" + c.getRetVal());
		}
		catch (NativeException | IllegalAccessException e) {
			e.printStackTrace();
		}
	}
}
  1. 运行

Jnative如果报错,可能为只支持32位JDK

posted @ 2018-05-23 16:52  韦艾薇薇  阅读(1363)  评论(0编辑  收藏  举报