步骤
-
native 声明 c/c++ 里方法 , System.loadLibrary()加载之后生成的so/dll
public class TestJavaCallC { public native void sayHello(); public static void main(String[] args){ System.loadLibrary("NativeCode1"); TestJavaCallC tNative = new TestJavaCallC(); tNative.sayHello(); } } -
生成native方法的头文件
javah -jni TestJavaCallC -
实现cpp
#include "TestJavaCallC.h" #include<iostream> using namespace std; JNIEXPORT void JNICALL Java_TestJavaCallC_sayHello(JNIEnv *, jobject) { cout << "hello word" << endl; } -
生成 so
g++ -fPIC -I/usr/lib/jvm/java-8-jdk/include -I/usr/lib/jvm/java-8-jdk/include/linux -shared -o libNativeCode1.so estJavaCallC.cpp -
so移到LD_LIBRARY_PATH,或修改LD_LIBRARY_PATH目录
export LD_LIBRARY_PATH=.. -
运行
java TestJavaCallC
PREVIOUSarchlinux性能调优
NEXT19年计划