1、编写一个java类文件
public class Test{
public native void say();
}
用native关键字修饰将被其它语言实现的方法
2、用javah命令生成.h文件
a、把Test.java文件编译成class文件
d、javah Test
你会发现当前目录下多了一个Test.h文件
3、生成dll文件,在此以Dev c++ v5.0汉化版为例
a、新建一个c++语言的dll工程,名叫Testdll
b、把里面自动生成的两个文件移除
c、右击工程名,添加,选择Test.h确定
d、新建一个单元,假如名称为Testdll.cpp,把Test.h声明的方法实现
#include <stdio.h>
#include "com_xinfeng_intf_Animal.h"
JNIEXPORT void JNICALL Java_Test_say
(JNIEnv *, jobject)
{
printf("Hello World!\n");
}
e、点击“运行”->“编译”,这时你会看到很多数据类型没被声明的错误,那是因为
com_xinfeng_intf_Animal.h使用了很多JAVA_HOME/include/jni.h文件自定义的数据类型,而jni.h又引
用了JAVA_HOME/include/win32/jni_md.h,这时你需要把jni.h和jni_md.h引入到工程里面来,左击工程名
“工程属性”->“文件/目录”->“包含文件目录”把JAVA_HOME/include和
JAVA_HOME/include/win32文件夹添加,确定后,再次编译一切正常,这时在工程
的目录下就找到testdll.dll文件,这样dll文件就生成了
4、调用dll文件
a、把testdll.dll文件复制在项目底下
(或JAVA_HOME/bin)
b、修改java文
public class Test{
static{
/*
* 转入dll文件,在此不需要后缀名
* 不同的系统库文件的后缀名是不一样的
* 如windows是dll,而linux是so
* jvm在不同系统会载入相应的库文件
*/
System.loadLibrary("Testdll"); //
}
public static void main(String[] args) {
Test test = new Test();
test .say();
}
public native void say();
}
5、运行结果
Hello World!
本文通过一个简单的Java Native Interface (JNI)示例介绍了如何创建一个Java类并利用C++代码实现其功能,具体步骤包括:1)定义Java类及其native方法;2)使用javah命令生成.h头文件;3)在C++环境中实现该方法;4)编译生成dll文件;5)在Java中加载并调用这个dll文件。
1万+

被折叠的 条评论
为什么被折叠?



