java如何调用windows动态链接库

在java项目开发的时候,可能会涉及调用第三方的接口,而第三方的接口提供方式不一定是以java类的方式提供,如果是C或C++开发的第三方系统,则一般以动态链接库的方式提供,现在就讲一下java是如何调用动态链接库的。比较流行的方法有jni和jawin, 后者是开源组织提供的封装库,相对调用简单,不需要懂得C或C++的编程方式。这里主要描述jni的调用方式,需要对C或C++有一定了解。

开发环境:eclipse, visual studio 2010

举例说明:

如有一个动态库mathOper.dll,里面有一个运算方法

 int Min(int a, int b);

这个方法是用来判断最小值的。因为java是不能直接调用这个方法,所以需要有个中间库来衔接java和mathOper.dll

第一步:定义这个中间库的名称为callMathOper,打开eclipse,新建一工程TestDll,定义类TestDll(名称任意),代码如下:

public class TestDll {
	static {
		System.loadLibrary("callMathOper");// 载入dll
	}

	public native static int Min(int a, int b);// 函数声明

}
第二步:打开cmd窗口,进入TestDll.class目录下,执行javah TestDll,在当前目录生成TestDll.h

第三步:打开visual studio,新建一项目callMathOper(这个就是中间库的名称),新建头文件TestDll.h,将第二步中生成的TestDll.h的内容copy到这个头文件里

第四步:选中该项目,右键"属性",修改配置

1.修改配置类型

2.加入jdk下的include目录,主要作用是引入jni.h这个头文件


第五步:在项目的源文件中新增一cpp文件callMathOper.cpp,加入如下代码:

#pragma comment(lib,"mathOper.dll.lib")

extern "C"_declspec(dllimport) int Min(int a,int b);

#include <stdio.h>
#include "TestDll.h"

JNIEXPORT jint JNICALL Java_TestDll_Min(JNIEnv *, jclass _cls, jint a, jint b){
	int result = Min(a,b);
	return result;
}
第六步:右键“生成”,产生callMathOper.dll,将callMathOper.dll和mathOper.dll拷到java工程TestDll根目录下,在TestDll类中加入main方法,进行测试:

public static void main(String[] args) {
    TestDll td = new TestDll();
    System.out.println(td.Min(123, 125));
}
看能否正常运行及输出结果是否正确。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值