上次玩JNI大概是一年前的事情了,发现现在用还需要查资料,真是好记性赢不了三寸烂笔头,刚好用这个了,记下以后省的找资料了。
一、准备环境
只列出我这次测试用到的环境和工具:
1. jdk
Version: 1.7
2. eclipse
Version: Kepler Service Release 1
Build id: 20130919-0819
3. visual studio 2012
4. ant
Version 1.9.2
想对目前来说都是比较新的版本
二、编写java类
package cn.tang.demos.jni; public class JNITest { public native int callMethod(int i,String s1); }
三、编译和生成.h头文件
1.通过cmd命令生成
2.通过ant 脚本生成
<project name="JNI Builder" default="build" basedir="."> <target name="init" depends="clean"> <property name="project-src" value="${basedir}/src" /> <property name="jni-folder" value="cn/tang/demos/jni" /> </target> <target name="complie" depends="init"> <mkdir dir="build" /> <javac srcdir="${project-src}" destdir="build" debug="true" deprecation="off" encoding="UTF-8"> <include name="${jni-folder}/**/*" /> <exclude name="${jni-folder}/JNITestMain.*" /> <classpath> </classpath> </javac> </target> <target name="build" depends="complie" description="Builds .h header file"> <javah destdir="build" classpath="build" > <class name="cn.tang.demos.jni.JNITest"/> <class name="cn.tang.demos.jni.JNITest2"/> </javah> </target> <target name="clean" description="Removes all generated artifacts"> <delete dir="build" /> </target> </project>
简要说明,源代码文件夹下有三个文件分别是JNITest.java,JNITest2.java,JNITestMain.java ,最后一个文件是main 方法的测试类,所以在编译成class文件的时候被我去掉了,所以最后生成只有两个.h文件。
四、创建dll项目
1.创建一个DLL的项目
2.修改项目设置,最好debug 和release都修改下
3.删除额外的文件
五、根据头文件编码生成dll
1.首先加入头文件依赖的头文件
2. 根据头文件的函数声明实现函数
#include "cn_tang_demos_jni_JNITest.h" #include <stdio.h> JNIEXPORT jint JNICALL Java_cn_tang_demos_jni_JNITest_callMethod (JNIEnv * env, jobject jo, jint ji, jstring js){ printf("jstring is %s",js); return ++ji; }
3. 编译生成dll
build 即可
六、使用dll
package cn.tang.demos.jni; public class JNITestMain { public static void main(String[] args) { System.load("D:\\workspace\\project\\MyTest\\Release\\JNITest.dll"); // System.loadLibrary("JNITest"); int ret=new JNITest().callMethod(19, "hello"); System.out.println("ret is "+ret); } }
相关推荐
Android JNI 开发 步骤 , 绝对详细
JNI开发步骤,简单理解JNI开发以及详细步骤。。。。。。。
巨详细,Linux 下操作JNI 每一个步骤都有。 每个想学童鞋可以看看哦。
为你提供的此文档可以帮助你编写JNI,步骤详细。
JNI技术在嵌入式软件开发中应用学些笔记
jni步骤
这是一个jni开发的小例子,具体 的实现步骤在博客:Android关于JNI开发(1)-----eclipse工具开发。里面写的有。需要的朋友可以搜出来看一下。
理解什么是 JNI JNI的操作步骤 JNI的适用场合
在AndroidStudio2.3.2下JNI开发的详细步骤
Android调用JNI的简单实例(附详细步骤).zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
Android调用JNI的简单实例(附详细步骤)请参考我的博客:http://blog.csdn.net/ericfantastic/article/details/49300131
android jni的搭建步骤,自己测试可用。 网上的复制粘贴太厉害。好多都是错的 我自己试验了正确的安装步骤,并做了整理
这两天要弄个JAVA调用DLL,研究了一下有点绕, java部分要生成.h头文件,所以弄了个例子在这分享下 JAVA调用DLL完整步骤 步骤里包括java部分代码及vc写的DLL代码
描述了通过java 实现jni的步骤文档以及代码实现
Java JNI调用动态库(Linux、Windows)的实现步骤
java通过JNI调用c++的简单配置步骤, Java 通过JNI调用c++ 1.java代码: //package com.gjl.testjni; class HelloWorld { static { System.loadLibrary("HelloWorld"); } private native void print(); ...
AndroidStudio环境下的jni调用(NDK),这个教程可以让完全不会AndroidStudio的人学会jni调用。完全步骤话,非常简单。
JNI入门学习第一篇:HelloWorld,主要是介绍操作步骤。
java 调用 dll 的方法,即JNI的使用,demo中有get()/set()方法,操作步骤详细,即使是没用过java的程序员按照步骤依然可以成功。