java.lang.UnsatisfiedLinkError:未找到实现

java.lang.UnsatisfiedLinkError: No implementation found?

本文关键字:实现 lang UnsatisfiedLinkError java      更新时间:2023-10-16

我正在尝试学习在android工作室中使用本机代码。但是,当我尝试调用返回整数值并将其传递给我的 java 类的本机函数时,我遇到了错误。我收到此错误java.lang.UnsatisfiedLinkError: 找不到 int com.mobi.MainActivity.randomintFromJNI(( 的实现(已尝试Java_com_mobi_MainActivity_randomintFromJNI(我可能做错了什么?

package com.mobi;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.widget.TextView;
    public class MainActivity extends AppCompatActivity {
        // Used to load the 'native-lib' library on application startup.
        static {
            System.loadLibrary("native-lib");
        }
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            // Example of a call to a native method
            TextView tv = (TextView) findViewById(R.id.sample_text);
            tv.setText(Integer.toString(randomintFromJNI()));
        }
        /**
         * A native method that is implemented by the 'native-lib' native library,
         * which is packaged with this application.
         */
        public native String stringFromJNI();
        public native static int randomintFromJNI();
    }
c++
#include <jni.h>
#include <string>
#include <cstdlib>
using namespace std;
extern "C"
JNIEXPORT jstring
JNICALL
Java_com_mobi_MainActivity_stringFromJNI(
        JNIEnv *env,
        jobject /* this */) {
    string hello = "Hello from C++";
    return env->NewStringUTF(hello.c_str());
}

JNIEXPORT jint
JNICALL
Java_com_mobi_MainActivity_randomintFromJNI(
        JNIEnv *env,
        jobject /* this */) {
    int val = rand()*100;
    return val;
}

你在Java_com_mobi_MainActivity_randomintFromJNI上缺少一个外部"C">