关闭

java调用.so文件

4275人阅读 评论(1) 收藏 举报
分类:

//第一步,

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 说明调用成功.














0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:79125次
    • 积分:1434
    • 等级:
    • 排名:千里之外
    • 原创:56篇
    • 转载:3篇
    • 译文:0篇
    • 评论:16条
    最新评论