• java JNI


     讲解java虚拟机以及堆和栈的:http://blog.csdn.net/cutesource/article/details/8244250

    编辑helloJNI.java

    class helloJNI {
    
            public native int  get();
            public native void set(byte c);
            static {
                //System.out.println(System.getProperty("java.library.path"));
                System.load("/usr/lib/helloJNI.so");
                //System.out.println("loading ok");
            }       
            public static void main(String[] args) {
                System.out.println("ing main 1");
                helloJNI test = new helloJNI();
                System.out.println("ing main ");
                byte c  = (byte)0xff;
                test.set(c);
                System.out.println("ing main 3");
                System.out.println("test:"  +  String.valueOf(test.get()));
            }
    }

    javac helloJNI.java

    生成头文件:javah -jni helloJNI

    编辑helloJNI.cpp

    #include "helloJNI.h"
    int ret=0;
    JNIEXPORT jint JNICALL Java_helloJNI_get
      (JNIEnv *env, jobject jo)
    {
        return ret;
    }
    
    JNIEXPORT void JNICALL Java_helloJNI_set
      (JNIEnv *env, jobject jo, jbyte c)
    {
        unsigned char cc = c;
        ret = cc;
    }

    编译:

    gcc -I/usr/local/lib/jdk1.7.0_71/include/linux -I/usr/local/lib/jdk1.7.0_71/include -fPIC -shared -o helloJNI.so helloJNI.c

    将 helloJNI.so 复制到/usr/lib中:

    sudo cp -v helloJNI.so /usr/lib/

    这里执行javah命令时与class文件在同一目录下。而如果class文件放入了包中

    如:

    package com.test.demo;

    class TestHello{

    ...

    }

    需要建立相应的目录com/test/demo/TestHello.class

    然后退出到com目录的上层目录进行:javah -jni com.test.demo.TestHello

    就能够正确的生成TestHello.class的头文件了,(头文件位于当前目录下)。

    jar -cvf TestHello.jar com/test/demo/TetsHello.class

    ------

    http://blog.csdn.net/liu251/article/details/3953906

  • 相关阅读:
    带最小值操作的栈 · Min Stack
    删除排序数组中的重复数字 II · Remove Duplicates from Sorted Array II
    K组翻转链表 · Reverse Nodes in k-Group
    HTML DOM Style borderBottomLeftRadius 属性
    PHP For 循环
    PHP copy() 函数
    CSS border-left-color 属性
    ASP.NET Web Pages 文件夹
    no-empty-label (Rules) – Eslint 中文开发手册
    PHP ksort() 函数
  • 原文地址:https://www.cnblogs.com/sunniflyer/p/4069311.html
Copyright © 2020-2023  润新知