jni学习简单例子
2016-02-24 17:18
585 查看
最近看了些jni的东西,简单学着写了点,工程目录结构如图
首先主要java 类,代码如下:
jni方法用native修饰
然后使用javah命令生成头文件,命令为
-classpath 指定class文件的目录,-d 输出的目录, jin.MyJni 是要生成头文件的java类
使用eclipse的话可以添加外部工具,可以很方便生成头文件,具体方法以后再写
下面是生成的头文件
然后是对应的c++的源码
jni.h文件是java的jdk里的,编译环境需要添加jdk目录,否则找不到
jni_MyJni.h就是刚才用javah命令生成的头文件
c++代码就是返回一个jstring字符串,并输出一段字符
c++需要编译成dll文件才能调用,我使用minGW进行编译。
可以新建一个c++项目,进行编译,不过还有方便的方法,eclipse的外部工具可以帮助编译,具体方法也是以后再写。
编译完成后生成我们需要的MyJNI.dll
此时java还找不到此文件了,我们需要配置工程的构建路径,项目上右键-》构建路径-》配置构建路径-》添加库-》插件依赖项-》完成
点开那个折叠箭头
如图
本机库位置编辑,工作空间,选择你MyJNI.dll文件位置。然后编译运行java方法,就可以正常运行了。结果如下图:
java和c++中都输出的文本。
首先主要java 类,代码如下:
package jni; public class MyJni { static { System.loadLibrary("MyJNI"); } public native String getStr(String str); public MyJni() { // TODO 自动生成的构造函数存根 System.out.println(getStr("g++")); } public static void main(String[] args) { new MyJni(); } }
jni方法用native修饰
然后使用javah命令生成头文件,命令为
javah -classpath 工程目录\bin\ -d 工程目录\jni -jni jin.MyJni
-classpath 指定class文件的目录,-d 输出的目录, jin.MyJni 是要生成头文件的java类
使用eclipse的话可以添加外部工具,可以很方便生成头文件,具体方法以后再写
下面是生成的头文件
/* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class jni_MyJni */ #ifndef _Included_jni_MyJni #define _Included_jni_MyJni #ifdef __cplusplus extern "C" { #endif /* * Class: jni_MyJni * Method: getStr * Signature: (Ljava/lang/String;)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_jni_MyJni_getStr (JNIEnv *, jobject, jstring); #ifdef __cplusplus } #endif #endif
然后是对应的c++的源码
<pre name="code" class="cpp">#include <jni.h> #include "jni_MyJni.h" #include <iostream> using std::cout; using std::endl; JNIEXPORT jstring JNICALL Java_jni_MyJni_getStr (JNIEnv * env, jobject, jstring pram) { jstring str=env->NewStringUTF("fdsf"); const char *dname=NULL; dname = env->GetStringUTFChars(pram, 0); printf("%s",dname); return str; }
jni.h文件是java的jdk里的,编译环境需要添加jdk目录,否则找不到
jni_MyJni.h就是刚才用javah命令生成的头文件
c++代码就是返回一个jstring字符串,并输出一段字符
c++需要编译成dll文件才能调用,我使用minGW进行编译。
可以新建一个c++项目,进行编译,不过还有方便的方法,eclipse的外部工具可以帮助编译,具体方法也是以后再写。
编译完成后生成我们需要的MyJNI.dll
此时java还找不到此文件了,我们需要配置工程的构建路径,项目上右键-》构建路径-》配置构建路径-》添加库-》插件依赖项-》完成
点开那个折叠箭头
如图
本机库位置编辑,工作空间,选择你MyJNI.dll文件位置。然后编译运行java方法,就可以正常运行了。结果如下图:
java和c++中都输出的文本。
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序