问题描述
|
解决方法
JNI涉及一种确切的命名方案,但并不是很明显。也许您的函数实现不符合它?
例如,如果您希望能够从JAVA代码中调用名为startServer的本机函数,则假设您的包名为com.example.something,而您的类称为MyClass,则您的JAVA类中应具有一个成员函数,如下所示:
private native void startServer();
然后,您的JNI实现应如下所示:
JNIEXPORT void Java_com_example_something_MyClass_startServer(JNIEnv *env,jobject obj) {
// Do something here...
}
否则,存在链接错误。
,可以得到此结果的另一个原因是,如果在进行JNI函数调用时未调用库:
static {
System.loadLibrary(\"myJNIFILE\");
}
应该在实际引用JNI函数之前的某个地方调用。