java调用.so文件

//第一步,

public class JavaToCTest

{

private native void sayHello();//声明本地方法.

static

{

System.loadLibrary("JavaToCTest");//需要加载的so库文件的名称,在linux中会在上前缀"lib"+库文件的名称.

}

public static void main(String[] args)

{

new JavaToCTest().sayHello();

}

}


//第二步,在linux系统中使用如下方法生成头文件.

javah -jni  JavaToCTest         使用该方法生成的头文件如下. 生成的文件是: JavaToCTest.h


/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class JavaToCTest */


#ifndef _Included_JavaToCTest
#define _Included_JavaToCTest
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     JavaToCTest
 * Method:    printlns
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_JavaToCTest_sayHello (JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif


//第三步,编写 c 代码, 该文件的名称为 JavaToCTest.c

内容如下:

#include <stdio.h>

#include <jni.h>

#include "JavaToCTest.h"


JNIEXPORT void JNICALL Java_JavaToCTest_sayHello(JNIEnv *env ,jobject obj)

{

printf("Java To C !!!!!   \n");

return;

}


//第四步:

编译生成库文件. 这个文件的文件名称为: libJavaToCTest.so

 gcc -I/usr/lib/jvm/java-6-openjdk/include/linux -I/usr/lib/jvm/java-6-openjdk/include/ -fPIC -shared -o  libJavaToCTest.so  JavaToCTest.c


//第五步:

运行java文件.

为了让java找到此so,运行:export LD_LIBRARY_PATH=.,将当前目录加入此环境变量。

java  JavaToCTest


如果看到 java To C 说明调用成功.














阅读更多
个人分类: JNI
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

java调用.so文件

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭