java调用c++

来源:互联网 发布:阿里云百度云差距 编辑:程序博客网 时间:2024/06/15 01:53

JNI.java

package xunw;public class JNI{    //使用JNI的关键字native    //这个关键字决定我们那些方法能在我们的C文件中使用    //只须声明,不必实现     public native void display();     public native double sum(double x,double y);           static {        System.out.println(System.getProperty("java.library.path"));        System.loadLibrary("xunw_JNI");        }              public static void main(String[] args) {       new JNI().display();       System.out.println(new JNI().sum(2.0, 3.0));    }}
javac xunw/JNI.java 并 javah xuw.JNI
编译后会生成xunw_JNI.h  xunw_JNI.c  编辑xunw_JNI.c

#include <jni.h>//导入我们需要实现的本地方法#include "xunw_JNI.h"#include <stdio.h> JNIEXPORT void JNICALL Java_xunw_JNI_display(JNIEnv *env, jobject obj){    printf("Hello World JNI!!");    return;} JNIEXPORT jdouble JNICALL Java_xunw_JNI_sum(JNIEnv *env, jobject obj, jdouble a, jdouble b){    return a + b;}


将xunw_JNI.c 编译为动态链接库lib***.so 注意命名规则

gcc xunw_JNI.c -I /home/xunw/jdk1.8.0_05/include/ -I /home/xunw/jdk1.8.0_05/include/linux/ -fPIC -shared -o libxunw_JNI.so

 libxunw_JNI    与System.loadLibrary("xunw_JNI")保持一致


运行程序主程序 JNI

java -Djava.library.path=~/workspace/LearnJava/src/ -classpath . xunw.JNI   //error  不能用~

java -Djava.library.path=/home/xunw//workspace/LearnJava/src/ -classpath . xunw.JNI   //ok



0 0
原创粉丝点击