java类:
public class Abc {
static {
System.loadLibrary("abc");
}
public native static String getAbc();
public static void main(String s[]) {
System.out.println(getAbc());
}
}
#~~~~~~~~~~~~~~~~~
终端敲入:
java Abc.java
javah Abc
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~````
生成Abc.h的头文件,内容如下:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class org_hexun_wangchong_admin_gethardware_GetHardWareInfo */
#ifndef _Included_Abc_GetAbc()
#define _Included_Abc_GetAbc()
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: org_hexun_wangchong_admin_gethardware_GetHardWareInfo
* Method: getHardWareInfo
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_Abc_getAbc
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
#~~~~~~~~~~~~~~~~~~
写Abc.c文件,内容:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/io.h>
#include "org_hexun_wangchong_admin_gethardware_GetHardWareInfo.h"
JNIEXPORT jstring JNICALL Java_Abc_getAbc
(JNIEnv *env, jobject t)
{
char *hd_sn_ptr="hello world";
//
jstring str ;
str = (*env)->NewStringUTF(env,hd_sn_ptr);
///
return str;
}
#~~~~~~~~~~~~~~~~~~~~~~~
生成so库
gcc -I/jdk/include -fPIC -c abc.c
gcc -shared -WI abc.o -o libabc.so
复制libabc.so到jdk/jre/lib/i386下
终端运行:
java Abc
java调用linux下的so库
最新推荐文章于 2024-08-12 03:46:30 发布