1、首先创建java文件Test.java,内容如下:
package com.jni;
publicclassTest {
static { //静态代码块,在JVM加载类的时候执行
System.loadLibrary("Helloworld");
//Helloworld为C++代码生成的dll文件,注意不加文件格式名
}
publicnativevoid output() ;
//output()方法声明,使用native修饰,这个方法将由C++实现
publicstaticvoid main(Stringargs[]){//正常使用main()方法
Testtest=newTest() ;
test.output();
}
}
a)编译Test.java文件,生成Test.class Javac–d . Test.java
//编译生成Test.class到当前目录下,自动生成包com.jni
b)编译Test.class文件,生成com_jni_Test.h文件(com jni为包名)
Javah
若编译不成功,使用完整的编译方法:
若还是未成功,请自行查阅javah的使用方法
Java文件夹目录:
2 创建C++文件Helloworld.cpp,内容如下:
(使用MicrosoftVisual Studio 2010)
新建项目Helloworld
选择dll项
(3)将2.B生成的com_jni_Test.h文件复制到Projects/Helloworld工程存放头文件的文件夹
(3)将头文件com_jni_Test.h包含进Helloworld.cpp
(4)继续将jni.h和jni_md.h头文件包含进Helloworld.cpp,这两个头文件位于JDK\inlude文件夹下方法如下
a.右键点击项目名,属性
b.选择VC++目录—〉包含目录—〉编辑
c.添加..jdk\include文件夹和..jdk\include\win32文件夹
d.包含成功后,打开com_jni_Test.h文件,将内容复制到Helloworld.cpp文件中,
注意把冒号删除。
Helloworld.cpp代码:
#include"stdafx.h"
#include"com_jni_Test.h"
//将2.B生成的com_jni_Test.h文件复制到Projects/Helloworld工程存放头文件的文件夹
#include<jni.h>
//将jdk\include\jni.h复制到Projects/Helloworld工程存放头文件的文件夹
#include<stdio.h>
JNIEXPORTvoidJNICALL Java_com_jni_Test_output(JNIEnv *, jobject){
printf("Hello world") ;
}
A.编译生成Helloworld.dll文件
B.将Helloworld.dll复制到..jdk\bin目录下
C.执行javac com.jni.Test,屏幕输出Helloworld,成功!
以上操作基于Windows XP,如使用其他操作系统可能会出现dll不兼容问题。使用Microsoft Visual Studio 2010 生成的dll文件为32位的要使用32位的JDK。