0
Я впервые использую Android NDK. Я хочу получить строку из собственного метода C++ и использовать ее в виде текста в текстовом виде. Я понятия не имею, где это проблема ..NDK: родной метод не найден
Мой код
Java: пакет: пакет com.example.nativetest;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
this.textView.setText(stringFromJNI());
}
public native String stringFromJNI();
static {
System.loadLibrary("CascadeClassifier");
}
C++:
#include <string.h>
#include <jni.h>
extern "C" {
JNIEXPORT jstring JNICALL
Java_com_example_nativetest_MainActivity_stringFromJNI
(JNIEnv *env, jobject obj)
{
return env->NewStringUTF("Hello from C++ over JNI!");
}
}
LogCat
11-24 22:41:58.646: E/AndroidRuntime(12950): FATAL EXCEPTION: main
11-24 22:41:58.646: E/AndroidRuntime(12950): java.lang.UnsatisfiedLinkError: Native method not found: com.example.nativetest.MainActivity.stringFromJNI:()Ljava/lang/String;
11-24 22:41:58.646: E/AndroidRuntime(12950): at com.example.nativetest.MainActivity.stringFromJNI(Native Method)
11-24 22:41:58.646: E/AndroidRuntime(12950): at com.example.nativetest.MainActivity.onCreate(MainActivity.java:31)
11-24 22:41:58.646: E/AndroidRuntime(12950): at android.app.Activity.performCreate(Activity.java:5133)
11-24 22:41:58.646: E/AndroidRuntime(12950): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
11-24 22:41:58.646: E/AndroidRuntime(12950): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2225)
11-24 22:41:58.646: E/AndroidRuntime(12950): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2311)
11-24 22:41:58.646: E/AndroidRuntime(12950): at android.app.ActivityThread.access$600(ActivityThread.java:149)
11-24 22:41:58.646: E/AndroidRuntime(12950): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1293)
11-24 22:41:58.646: E/AndroidRuntime(12950): at android.os.Handler.dispatchMessage(Handler.java:99)
11-24 22:41:58.646: E/AndroidRuntime(12950): at android.os.Looper.loop(Looper.java:137)
11-24 22:41:58.646: E/AndroidRuntime(12950): at android.app.ActivityThread.main(ActivityThread.java:5214)
11-24 22:41:58.646: E/AndroidRuntime(12950): at java.lang.reflect.Method.invokeNative(Native Method)
11-24 22:41:58.646: E/AndroidRuntime(12950): at java.lang.reflect.Method.invoke(Method.java:525)
11-24 22:41:58.646: E/AndroidRuntime(12950): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739)
11-24 22:41:58.646: E/AndroidRuntime(12950): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555)
11-24 22:41:58.646: E/AndroidRuntime(12950): at dalvik.system.NativeStart.main(Native Method)