前言
之前写了在windows系统下Java调取dll库,这篇是在Linux下调用so库,方法基本相同,但是生成dll库的方法和so库的方法有一定的区别
一、生成.h文件
这里生成,h的方法和我的这篇文章一致,大家可以看一下,这里就不详细介绍了
基本命令(这里如果文件里面没有Main主函数,可能没有class文件,在文件目录下用Javac文件名生成.class文件)然后再生成,h文件。
com.aijiao.test.JNIDemo是在文件目录中文件的目录,如果在文件所在目录下可以只写JNIDemo文件名称。
javah -classpath . -jni com.aijiao.test.JNIDemo
生成的.h文件
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_aijiao_test_JNIDemo */
#ifndef _Included_com_aijiao_test_JNIDemo
#define _Included_com_aijiao_test_JNIDemo
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_aijiao_test_JNIDemo
* Method: testInt
* Signature: (I)I
*/
JNIEXPORT jint JNICALL Java_com_aijiao_test_JNIDemo_testInt
(JNIEnv *, jobject, jint);
/*
* Class: com_aijiao_test_JNIDemo
* Method: testString
* Signature: (Ljava/lang/String;)Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_com_aijiao_test_JNIDemo_testString
(JNIEnv *, jobject, jstring);
#