jni记录

原创 2012年03月23日 23:00:35

  jni学了好几次了,每次学了点基础就忘了,这次记录下来以备查找。

    1,首先创建一个目录,可以用eclipse创建,也可以手工创建。

      

     2,在src目录下创建包结构,编写java层代码。

package com.test.jni;

public class Jnitest {
	static {
		System.loadLibrary("hello");
	}

	public static native void print();

	public static void main(String[] args) {
		System.out.println("Hello,World");
		print();
	}
}
      3,使用命令行进入src目录,使用javac编译java代码,然后在bin\classes\目录下会生成Jnitest.class文件

       4,使用命令行进入bin\classes\目录下,使用  javah -d ..\..\lib  com.test.jni.Jnitest, 会在lib目录下生成com_test_jni_Jnitest.h文件。


        5,拷贝com_test_jni_Jnitest.h文件到linux环境下,创建com_test_jni_Jnitest.c文件

#include<stdio.h>
#include "com_test_jni_Jnitest.h"
/*
 * Class:     com_test_jni_Jnitest
 * Method:    print
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_com_test_jni_Jnitest_print
  (JNIEnv *env, jclass class){
	printf("Hello world from jni");
}

       6,编译so文件,其中 gcc参数 -I表示头文件所在目录

gcc com_test_jni_Jnitest.c -I/usr/lib/jvm/java-6-sun/include/ -I/usr/lib/jvm/java-6-sun/include/linux -fPIC -shared -o libhello.so

7,将生成的so文件拷到工程lib下面

8,在linux系统下 进入bin/classes 目录下 ,运行 其中-D指定了java寻找so的路径。
java -Djava.library.path="../../lib/" com.test.jni.Jnitest 

   输出结果如下:Hello,World
Hello world from jni

















                    

java curl开发记录(二) linux系统下jni封装curl,android java使用curl

java curl开发,在linux系统上,通过jni对libcurl进行封装。 开发环境:ubuntu 15.04 64位,jdk 1.7...

JNI DETECTED ERROR IN APPLICATION解决记录

最近遇到一个JNI的问题,同一套代码在Android4.4版本前的设备上运行是OK的,但是在Android5.0之后的设备上就会崩溃,查看logcat发现报JNI DETECTED ERROR IN ...

Android Studio NDK JNI开发入门记录

很早使用eclipse+ndk研究过jni开发,当时觉得配置、开发起来很麻烦,现在使用Android Studio开发jni,相对觉得比较容易。 先说明一下开发环境 Mac OS X 10.11 ...

Android JNI学习之第一个入门实例(确实花了不少功夫,也遇到了很多阻碍,不过还好,最终解决,记录下)

关于如何安装配置Cygwin,如何安装ndk网上搜搜一大片,这里不再赘述。下面主要对这个简单的JNI实例的实现,做一个记录。 注意:使用的是ndk-1.6.r1,在ndk_r4版本后和这有点区别,这里...

记录JNI编程有关知识点

注册JNI函数有两种方法:静态注册和动态注册 1.静态注册:比较常见也比较麻烦 - 先创建Java类,声明Native方法,编译成.class文件。  - 使用Javah命令生成C/C++的头文...

linux eclipse android NDK+JNI 本地共享链接库开发笔记。。------记录一下,不然过段时间就忘了

小弟不才,网上查了很多资料才把第一个共享链接库写出来并测试成功。。。     一.首先当然是配置开发环境    android的开发环境此处不多说,见另一博文:Android开发环境搭建   ...

cocos2d-x lua与jni层互调记录

cocos2d-x lua与jni层互调记录 本文章用于自己的实现流程记录和代码记录,不喜勿喷。 lua 因为cocos-lua 是无法与Java直接互调的,所以需要c++层作为中间层来实现互调。 ...
  • CWhy7
  • CWhy7
  • 2016年08月29日 10:54
  • 708

jni编程细节记录

相信做jni开发的人都知道,jni是什么意思,接口本地调用。 本文记录下本人在开发中关于jni编程中用c++代码编写的简单调用以及复杂数据的调用等等会遇到的一些问题已经解决办法 1、jni...

JNI初学记录

Android studio自带例子编译出现: 错误1:Error:FAILURE: Build failed with an exception. * What went wrong: Exec...

JNI基本知识,做记录

我自己写JNI的基本流程, 1.首先编写java部分的JNI接口public class JNIInterface { public native String sayHi(); public n...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:jni记录
举报原因:
原因补充:

(最多只允许输入30个字)