java.lang.UnsatisfiedLinkError: Native method not found
Question:
I'm trying to make a NDK application, but i get this error
java.lang.UnsatisfiedLinkError: Native method not found: com.example.hellondk.jni.HelloNDK.hello:()I
I don't understand because the name of the C++ funtion is the same as the java packagename and class
HelloNDK.cpp
I don't understand because the name of the C++ funtion is the same as the java packagename and class
HelloNDK.cpp
#include <jni.h>
JNIEXPORT jint JNICALL Java_com_example_hellondk_jni_HelloNDK_hello(JNIEnv* env, jobject o){
return (jint) 2;
}
HelloNDK.javapackage com.example.hellondk.jni;
public class HelloNDK {
public native int hello();
static {
System.loadLibrary("HelloNDK");
}
}
Android.mkLOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := HelloNDK
LOCAL_SRC_FILES := HelloNDK.cpp
include $(BUILD_SHARED_LIBRARY)
Solution 1:
You're exporting it as a C++ function, but the JNI linker doesn't understand C++ name mangling, so it won't be able to find it.
You can use
You can use
extern "C"
to have the function exported without C++ name mangling:extern "C" JNIEXPORT jint JNICALL Java_com_example_hellondk_jni_HelloNDK_hello(JNIEnv* env, jobject o)
{
return (jint) 2;
}
Solution 2:
It could be the problem with the Generating .so shared Library. Please generate the shared library which compiles all the .c/.cpp files.
Hi,
ReplyDeletei am trying c programming and getting same error what to do