Java 以前工作的函数的不满意链接
我有一个以前正在工作的JNI库, 由于某些原因(我不知道有任何当前更改),我无法再使用它,因为我遇到以下错误: 线程“main”java.lang.UnsatifiedLinkError中出现异常:de.ifi.lmu.sommerd.ftsserver.jni.IndexJNI.loadIndex(Ljava/lang/String;)V 位于de.ifi.lmu.sommerd.ftsserver.jni.IndexJNI.loadIndex(本机方法) 下面是我的测试设置:Java 以前工作的函数的不满意链接,java,c,java-native-interface,Java,C,Java Native Interface,我有一个以前正在工作的JNI库, 由于某些原因(我不知道有任何当前更改),我无法再使用它,因为我遇到以下错误: 线程“main”java.lang.UnsatifiedLinkError中出现异常:de.ifi.lmu.sommerd.ftsserver.jni.IndexJNI.loadIndex(Ljava/lang/String;)V 位于de.ifi.lmu.sommerd.ftsserver.jni.IndexJNI.loadIndex(本机方法) 下面是我的测试设置: package
package de.ifi.lmu.sommerd.ftsserver.jni;
public class IndexJNI {
static {
System.load("/home/XXX/workspace/IndexJNI/resources/newLib.so");
System.out.println("Loading library worked");
IndexJNI.loadIndex("");
}
public static native void loadIndex(String indexName);
}
这里是.h和.c文件的相关部分:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class de_ifi_lmu_sommerd_ftsserver_jni_IndexJNI */
#ifndef _Included_de_ifi_lmu_sommerd_ftsserver_jni_IndexJNI
#define _Included_de_ifi_lmu_sommerd_ftsserver_jni_IndexJNI
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: de_ifi_lmu_sommerd_ftsserver_jni_IndexJNI
* Method: loadIndex
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_de_ifi_lmu_sommerd_ftsserver_jni_IndexJNI_loadIndex
(JNIEnv *, jobject, jstring);
#ifdef __cplusplus
}
#endif
#endif
这是我的makefile:
test_gcc_lib: run_queries.o
g++ -shared -fPIC run_queries.o SSA.a -o newLib.so
问题是我把呼叫改成了static, 所以现在签名不再正确了。
我刚刚不得不将jobject更改为jclass。run\u queries.o的内部是什么?
test_gcc_lib: run_queries.o
g++ -shared -fPIC run_queries.o SSA.a -o newLib.so