gpt4 book ai didi

Android 4.2 ndk : library loading crash: load_library(linker. cpp :750) || soinfo_link_image || libhoudini. 所以 ||打开简历

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:40:55 34 4
gpt4 key购买 nike

我正在使用包含 opencv 的 native 库。该库在所有设备和模拟器中构建良好并运行良好,但在 Android 4.2 上则不然。它在 System.loadLibrary("mylib"); 上崩溃。

该库是为 armeabi-v7a armeabi x86 mips 构建的(我在 jnilibs 文件夹中看到生成了所有 so 文件)

我被这个错误困住了,因为我在互联网上找不到任何可以解释我的问题的答案。

无法加载库:soinfo_link_image(linker.cpp:1635):无法加载库“libopencv_java.so”,日志跟踪:

1755-1755/com.ex.app E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.UnsatisfiedLinkError: Cannot load library: soinfo_link_image(linker.cpp:1635): could not load library "libopencv_java.so" needed by "libmylib.so"; caused by load_library(linker.cpp:745): library "libopencv_java.so" not found
at java.lang.Runtime.loadLibrary(Runtime.java:371)
at java.lang.System.loadLibrary(System.java:535)
at com.ex.app.core.MyApplication.initVippAsync(MyApplication.java:198)
at com.ex.app.core.MyApplication.onCreate(MyApplication.java:100)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1000)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4391)
at android.app.ActivityThread.access$1300(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1294)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5039)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
at dalvik.system.NativeStart.main(Native Method)

Android.mk:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
OPENCV_INSTALL_MODULES:=on
include /Users/ahmed/Documents/openCv4android/OpenCV-2.4.10-android-sdk/sdk/native/jni/OpenCV.mk
LOCAL_MODULE := mylib
LOCAL_LDLIBS += -llog -ldl
LOCAL_SRC_FILES := myFile.c
include $(BUILD_SHARED_LIBRARY)

应用程序.mk:

APP_ABI := armeabi-v7a armeabi x86 mips
APP_PLATFORM := android-16

最佳答案

我找到了答案。这是两个步骤:

1/如果您使用的是模拟器 Genymotion,Android 4.2.2,您将缺少库,这是由 Genimotion 的更新之一引起的。参见 this .解决方案 :(1)> 下载以下压缩文件:here .(2)> 只需将其拖放到您的模拟器中即可。(3)> 重启你的模拟器。

2/在 Android 4.2 中,操作系统无法找到 apk 中提供的 jni 库的路径。例如,在我的例子中,我使用的是一个使用 openCV 库的 jni 库。对于调用 System.loadLibrary("mylib"); 的每个设备和 android 版本都运行良好,mylib 自动加载 opencv 库。对于 Android 4.2,正如@Chris 在他的评论中所说,我显式加载了 openCV,所以:

System.loadLibrary("opencv_java");
System.loadLibrary("mylib");

关于Android 4.2 ndk : library loading crash: load_library(linker. cpp :750) || soinfo_link_image || libhoudini. 所以 ||打开简历,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28806373/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com