【发布时间】:2017-07-20 19:52:49
【问题描述】:
我创建了使用 Android Ndk 运行的示例项目 (HellWorldJNI),并从本机 C 打印“Hello world from Jni”消息。
然后我从项目的Output/apk目录中提取样本的HelloWorldJNI.apk文件。
所以我得到了来自不同设备(如 arm64-v8a、armeabi、x86..等)的所有 .so 文件
现在我创建了一个新项目(CallJNIFromSoFile)并在主文件夹中创建了 jniLibs 文件夹,并将 HelloWorldJNI 应用程序的所有 .so 文件复制到这个新项目中。
-
之后我像这样加载HelloWorldJNI App的库和函数名
static { System.loadLibrary("hello-android-jni"); } public native static String getMsgFromJni(); -
在这里我被击中了,我可以毫无问题地加载“hello-android-jni”库。但是上面的本机方法 getMsgFromJni() 以红色显示并且无法调用该方法。
完全没有收到消息“来自 Jni 的 Hello world”
这是我的 Logcat 输出:
java.lang.UnsatisfiedLinkError: No implementation found for java.lang.String at com.example.hari.myopencvvsample.MainActivity.getMsgFromJni(Native Method)
请建议我是否遗漏了上述步骤以外的任何内容。我尝试了很多方法,例如重新生成 .so 文件,然后重新放入,但没有奏效。对不起我的英语。
提前致谢。
【问题讨论】:
-
我正在为同样的事情苦苦挣扎!请问你最后是怎么解决的?谢谢!
标签: android android-ndk