java JNI开发
来源:互联网 发布:淘宝退货流程 编辑:程序博客网 时间:2024/05/22 15:39
1:简单JNI开发步骤:
1.1开发Java类
1.1.1 native方法的开发:
有一个native修饰的方法(此方法即本地方法不用实现);
Eg: public native void dispalyHelloworld();
1.1.2 加载dll/so文件
写一个静态块来加载dll/so文件
Eg: static {
System.loadLibrary("Hello");
}
1.1.3 调用native修饰的本地方法
调用native修饰的本地方法,其实和调用其他方法一样,类对象.方法名
Eg: publicstaticvoidmain(String[] args) {
newHello().dispalyHelloworld();
}
1.1.4 java类的整体代码如下:
publicclassHello {
public native void dispalyHelloworld();
static {
System.loadLibrary("Hello");
}
public staticvoidmain(String[] args) {
newHello().dispalyHelloworld();
}
}
1.2 使用jdk来生成java的class文件对应的c/c++头文件
1.2.1 首先测试下jdk环境是否配置成功
Cmd----随便目录下运行 javah,如果出现 javah用法选项之类的说明jdk配置成功,如果没有出现则重新配置jdk环境;
1.2.2 jdk生成头文件
Jdk的安装目录下的bin下的javah.exe专门用来生产头文件的,
所以在dos下,进入项目目录下的bin目录下Eg: E:\java\javaworkspace\JNITest\bin
然后使用javah class文件名/javah 包名.class文件名 Eg:javah com.dz.jni.Hello
就会在bin目录下生成一个包名_类名.h文件,eg: com_dz_jni_Hello.h
Eg:上面的Hello类生产的对应头文件为:
#ifndef _Included_Hello
#define _Included_Hello
#ifdef __cplusplus
extern "C" {
#endif
/*
*Class: Hello
*Method: dispalyHelloworld
*Signature: ()V
*/
JNIEXPORT void JNICALLJava_Hello_dispalyHelloworld
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
1.3 开发dll文件(vc++作为开发工具)
1.3.1 使用vc++/vs创建一个 dll项目;
新建—工程—win32Dynamic-Link Library—项目名称---一个简单的Dll工程
1.3.2 建立头文件
文件---新建—文件—c/c++Header File --- 复制java生成的头文件(Eg: com_dz_jni_Hello.h)
然后在复制文件内容到刚建的头文件中;
1.3.3 开发对应方法
复制头文件中的方法,添加大括号,因为生产的方法的参数只有参数类型,没有参数变量,我们可以自己在参数类型后添加参数变量,然后进行一切操作;
Eg:
JNIEXPORT void JNICALLJava_Hello_dispalyHelloworld
(JNIEnv *, jobject){
printf("Hello");
}
1.3.3 导入头文件:
#include "Hello.h"
1.3.4 运行生成dll文件
按F5运行生成对应的dll文件(如有错误可参考JNI 错误信息),在项目目录下的debug下可以看对应的dll文件;
1.3.5 c/c++ source File内容:
Eg: #include "stdafx.h"
#include "Hello.h"
JNIEXPORT void JNICALL Java_Hello_dispalyHelloworld
(JNIEnv *, jobject){
printf("Hello");
}
1.4 dll放入java项目
把生产的dll文件复制java项目的bin目录下(注:如果有包文件,dll要与包文件是同级目录,不能把dll直接放到包文件夹下了,总之就是在bin目录下就对了)
- java JNI开发
- java JNI开发
- java JNI开发
- java JNI开发
- java jni 开发
- java 开发 jni
- Java JNI开发
- jni 开发 c调用java
- JAVA JNI开发应用实例
- 利用JNI实现JAVA插件开发
- JNI开发中Java与C++联调
- Java跨平台开发神器之JNI
- 安卓开发 java调用jni
- JNI开发之访问java的实例
- JNI开发
- JNI开发
- jni开发
- JNI开发
- 与英语有关的一个月
- Android提示版本更新的实现
- java commons
- 华为2012上机题
- uboot 之led灯闪烁
- java JNI开发
- 将Qt 动态链接生成的exe及依赖dll打包方法
- windows系统android开发环境搭建(自家用)
- 个人学习技术年总结
- android 电容屏(三):驱动调试之驱动程序分析篇
- 10 Useful Advanced Git Commands
- Android使用Json获取数据实例【这个例子不太好,仅作参考】
- 每天学点Linux:四
- HDU 4496 Tutor 2013 ACM-ICPC吉林通化全国邀请赛E题