zoukankan      html  css  js  c++  java
  • 教学生jni编程(一)

    我的所有文件的目录在/home/michelle/WORKM/DAYCODE/day0426/,请根据个人情况适当调整

    1)创建一个HelloWorld.Java文件,如下:

    public class HelloWorld {
        static{
            System.load("/home/michelle/WORKM/DAYCODE/day0426/libhelloWorld.so");
        }
        public HelloWorld(){
        }
        public native void sayHello(String message);                                      //表明是本地语言的函数声明
    }

    2)编译HelloWorld.java生成HelloWorld.class文件

     javac HelloWorld.java

    3)使用如下命令生成HelloWorld.h文件

    javah -jni HelloWorld 

    4)创建一个HelloWorld.cpp的文件如下:

    #include  <stdio.h>

    #include  <String.h>
    #include "HelloWorld.h"

    JNIEXPORT void JNICALL Java_HelloWorld_sayHello(JNIEnv * env, jobject obj, jstring name) {
        jboolean isCopy;
        const char * pname = env->GetStringUTFChars(name,&isCopy);
        int len = strlen(pname);
        printf("Hello,%s ", pname);
        env->ReleaseStringUTFChars(name,(const char *)pname);


        return;
    }

    5)使用如下命令编译生成libhelloWorld.so文件

     g++ -I /usr/lib/jvm/java
    -8-openjdk/include -I /usr/lib/jvm/java-8-openjdk/in
    clude/linux -fPIC -c HelloWorld.cpp                  //注意红色的是一行代码

    g++ -shared  -o libhelloWorld.so HelloWorld.o 

    6)创建一个JNIClient.java文件如下:

    public class JNIClient{
        public static void main(String argv[]){
            HelloWorld h = new HelloWorld();
            h.sayHello("World");
        }

    }

     7)编译生成JNIClient.class文件

     javac JNIClient.java

    8)用java JNIClient测试是否成功。

    java JNIClient运行即可,成功OK。

     主要内容框架参考http://blog.csdn.net/huoyin/article/details/3006772,为了教学需要,更加详细的予以说明。

  • 相关阅读:
    适用于 Laravel 的内部收单模块
    适用于 Laravel API 的签名看守器
    适用于 Laravel 的百度搜索推送
    适用于Yii2的千万级数据秒分页
    PostMan 代理的一个大坑
    PHP 各种金融利息的计算方法
    软件工程之UML建模课
    Windows 通过 cmd 得到域名的dns
    在windows下,通过git-bash里的ssh,远程登陆虚拟机里的linux
    Java常见缩写
  • 原文地址:https://www.cnblogs.com/guochaoxxl/p/6823132.html
Copyright © 2011-2022 走看看