Java Native Interface

2019-03-29  本文已影响0人  yunpxu

All source code is available at github.

[yunpxu@yunpxu-mac jni]$ cat src/com/jni/HelloWorld.java 
package com.jni;

public class HelloWorld {

    static {
        System.loadLibrary("HelloWorld");
    }

    public native String sayHello(String msg);

    public static void main(String[] args) {
        new HelloWorld().sayHello("Hello JNI");
    }
}
[yunpxu@yunpxu-mac jni]$ javac -d out/ -h src/com/jni/c  src/com/jni/HelloWorld.java
[yunpxu@yunpxu-mac jni]$ tree
.
├── jni.iml
├── out
│   └── com
│       └── jni
│           └── HelloWorld.class
└── src
    └── com
        └── jni
            ├── HelloWorld.java
            └── c
                └── com_jni_HelloWorld.h

7 directories, 4 files
[yunpxu@yunpxu-mac jni]$ cat src/com/jni/c/HelloWorld.c 
#include <stdio.h>
#include <jni.h>
#include "com_jni_HelloWorld.h"

JNIEXPORT jstring JNICALL Java_com_jni_HelloWorld_sayHello
  (JNIEnv *env, jobject obj, jstring str) {
    printf("%s\n",(*env)->GetStringUTFChars(env, str,0));
    return str;
}
int main()
{

}
[yunpxu@yunpxu-mac jni]$ gcc -I"$JAVA_HOME/include" -I"$JAVA_HOME/include/darwin/"  -o out/libHelloWorld.jnilib src/com/jni/c/HelloWorld.c
[yunpxu@yunpxu-mac jni]$ tree out/
out/
├── com
│   └── jni
│       └── HelloWorld.class
└── libHelloWorld.jnilib
[yunpxu@yunpxu-mac jni]$ cd out/ && java com.jni.HelloWorld
Hello JNI
上一篇 下一篇

猜你喜欢

热点阅读