`
tmj_159
  • 浏览: 705842 次
  • 性别: Icon_minigender_1
  • 来自: 永州
社区版块
存档分类
最新评论

JNI 详细步骤

 
阅读更多

      上次玩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);
    }

}
  • 大小: 59.2 KB
  • 大小: 37.7 KB
  • 大小: 42.7 KB
  • 大小: 8.9 KB
  • 大小: 76.4 KB
  • 大小: 79 KB
分享到:
评论

相关推荐

    Android JNI 开发 步骤

    下面将详细介绍Android JNI开发的各个步骤。 #### 二、步骤详解 ##### 1. 新建Android工程 - 打开Android Studio或Eclipse for Android Developers。 - 创建一个新的Android项目,选择合适的项目模板,如“Empty ...

    JNI开发步骤

    下面是 JNI 开发的详细步骤: Step 1:环境搭建 首先,需要安装 Cygwin 和 Android NDK。Cygwin 是一个 Unix 模拟器,可以在 Windows 平台上运行 Unix 命令。Android NDK 是 Android 官方提供的native开发工具包,...

    详细的JNI操作步骤(LINUX)

    在Linux环境下使用JNI,通常涉及到以下步骤: 一、环境准备 在开始之前,确保你已经安装了JDK,因为JNI开发需要用到javah工具。同时,还需要一个C/C++编译器,如GCC,用于编写和编译本地方法。 二、创建Java类 ...

    JNI编写步骤

    ### JNI编写步骤详解 #### 一、概述 JNI(Java Native Interface)是Java平台标准的一部分,它允许Java代码和其他语言写的代码进行交互。JNI在Android开发中尤其重要,因为这使得开发者可以在性能要求较高的场景下...

    android jni开发步骤

    本教程将围绕"Android JNI开发步骤"展开,详细介绍如何在Eclipse环境中进行JNI开发。 首先,我们需要创建一个Android项目。打开Eclipse,选择"File" -&gt; "New" -&gt; "Android Project",填写项目名称和目标SDK版本,...

    JNI技术开发步骤详解

    JNI(Java Native Interface)技术是Java平台提供的一种接口,允许Java代码和其他语言写的代码进行交互。在嵌入式软件开发中,JNI起到了桥梁的作用,它连接了Java虚拟机(JVM)与本地(非Java)代码,使得开发者可以...

    JNI 使用 过程 步骤

    理解什么是 JNI JNI的操作步骤 JNI的适用场合

    android studio jni步骤

    ### Android Studio JNI集成步骤详解 #### 一、JNI简介与应用场景 JNI(Java Native Interface)是一种标准接口,允许Java代码和其他语言(如C、C++)编写的代码进行交互。在Android开发中,JNI通常用于实现性能...

    Jni详细解析

    ### Jni详细解析 #### 一、Jni简介与应用场景 JNI(Java Native Interface)是Java平台标准的一部分,它允许Java代码与其他语言写的代码进行交互。JNI在Android开发中的应用场景非常广泛,尤其当涉及到高性能计算...

    详细的JNI说明

    **使用JNI编程**涉及以下步骤: 1. **声明本地方法**:在Java类中声明native关键字修饰的本地方法,但不提供实现。 2. **生成头文件**:使用javah工具,根据Java类中的本地方法声明生成对应的C/C++头文件。 3. **...

    Android调用JNI的简单实例(附详细步骤)

    本教程将通过一个简单的实例,详细介绍如何在Android项目中调用JNI。 一、JNI简介 JNI是Java平台标准的一部分,它为Java程序员提供了一个接口,可以使用本地代码(如C/C++)来扩展Java应用程序。JNI使得开发者能够...

    安卓串口Socket通讯USB驱动jni相关-Android调用JNI的简单实例附详细步骤.zip

    下面将详细介绍这个主题涉及的关键知识点。 1. **JNI基础**: JNI为Java应用程序提供了一种方法来调用本地(非Java)代码,反之亦然。开发者通常使用JNI来利用已有的C/C++库,或者实现需要高效计算的部分。在...

    jni.zip jni编译jni下载

    使用JNI时,主要涉及以下几个步骤: 1. **声明Native方法**:在Java源码中,使用`native`关键字声明方法,不提供具体实现。 2. **生成JNI头文件**:使用`javah`工具,输入.class文件,生成对应的C/C++头文件,该...

    Android-在AndroidStudio2.3.2下JNI开发的详细步骤

    以下是使用Android Studio 2.3.2进行JNI开发的详细步骤: 1. **创建项目** 首先,打开Android Studio并创建一个新的Android项目。选择"Empty Activity"模板,并为项目命名,例如"JNIDemo01"。 2. **添加JNI支持**...

    JAVA JNI调用DLL完整步骤

    本教程将详细介绍如何通过JNI在Java中调用DLL的完整步骤。 1. **创建Java类和本地方法** 首先,在Java项目中创建一个类,声明需要调用DLL中的本地方法。这些方法需要使用`native`关键字标记,并在对应的`native`...

    jni最简单例子,注释详细

    2. **JNI的使用步骤** - **编写Java代码**:首先定义一个Java类,声明native方法,这些方法将在本地代码中实现。 - **生成头文件**:使用`javah`工具,根据Java类生成包含C/C++函数原型的头文件。 - **编写本地...

    JNI-API详细说明

    ### JNI-API详细说明 #### 一、概述 Java本地接口(Java Native Interface,简称JNI)是一种重要的编程技术,它允许Java代码与用其他语言(如C、C++和汇编语言)编写的本地代码进行交互。JNI的核心优势在于其灵活...

    JNI的两个头文件jni.h和jni_md.h

    使用JNI时,开发流程通常包括以下步骤: 1. **编写本地方法**:在Java类中声明native方法,并使用`native`关键字。 2. **生成JNI头文件**:使用`javah`工具,根据Java源代码生成对应的C/C++头文件,这个文件会包含`...

    Eclipse Android NDK JNI 详细开发流程

    ### Eclipse Android NDK JNI 详细开发流程 #### 一、前言 在进行Android应用开发时,有时我们需要利用原生代码(通常是C/C++)来提高应用性能或访问某些特定硬件资源,这时就需要用到NDK(Native Development Kit...

Global site tag (gtag.js) - Google Analytics