在处理一些和系统相关的系统调用时 java往往不能满足要求,需要调用C/iC++来处理函数。一下通过小例子来说明如何调用动态链接库。
1 --编写一下java程序 注意dll文件一定要放在 path路径下面,可以输出path路径。如果想放到自定义路径下,可以设置在环境变量中设置path路径。
/**
* 测试 java调用动态链接库
* @author fujia
*
*/
public class javacall
{
static
{
System.out.println(System.getProperty("java.library.path"));//检查设置路径,dll文件一定要放在patrh下面
System.loadLibrary("testdll");
}
public native static int shanfei(int i);
public static void main(String[] args)
{
javacall jc = new javacall();
int j;
j = jc.shanfei(8);
System.out.println(j);
}
}
javac javacall.java 生成类文件
用javah javacall 生成javacall.h头文件
2- 新建动态链接库工程
win32 dynamic-link library 工程
引入jni_md.h、 jni.h 、 javacall.h三个头文件到VC工程下面
jni.h 路径 Java\jdk1.6.0_16\include
jni_md.h 路径 \jdk\include\win32\jni_md.h
C/C++代码
#include "javacall.h"
JNIEXPORT jint JNICALL Java_javacall_shanfei (JNIEnv *, jclass, jint p)
{
int j = p*p;
return j;
}
运行 将debug下的dll文件拷到指定path路径下面
运行javacall文件
可以执行 java javacall 就可以看到效果