簡體   English   中英

無法加載庫libopencv_java.so

[英]Could Not Load Library libopencv_java.so

我目前正面臨某個本地編譯問題。 為了清楚起見,我已經完成了opencv-ndk配置而沒有錯誤。 事實上,我已經從源代碼編譯並執行了一些示例和教程。 但是,當我嘗試編譯它時,它給出了一個錯誤,表明我在我的庫中丟失了一些東西。 以下是eclipse的日志文件。 注意,在eclipse項目中,我在obj-> local-> armeabi-v7a-> objs目錄下有libopencv_java.so。

03-19 10:14:11.142: D/dalvikvm(6360): Trying to load lib /data/app-lib/com.example.detectimage-2/libnative_sample.so 0x4141bc60
03-19 10:14:11.152: E/dalvikvm(6360): dlopen("/data/app-lib/com.example.detectimage-2/libnative_sample.so") failed: Cannot load library: soinfo_link_image(linker.cpp:1635): could not load library "libopencv_java.so" needed by "libnative_sample.so"; caused by load_library(linker.cpp:745): library "libopencv_java.so" not found
03-19 10:14:11.152: E/JNI(6360): WARNING: Could not load libmysharedlibrary.so
03-19 10:14:11.152: I/Sample::Activity(6360): Instantiated new class com.example.detectimage.DetectImageActivity
03-19 10:14:11.162: I/Sample::Activity(6360): onCreate
03-19 10:14:11.162: D/dalvikvm(6360): Trying to load lib /data/app-lib/com.example.detectimage-2/libnative_sample.so 0x4141bc60
03-19 10:14:11.162: E/dalvikvm(6360): dlopen("/data/app-lib/com.example.detectimage-2/libnative_sample.so") failed: Cannot load library: find_library(linker.cpp:889): "/data/app-lib/com.example.detectimage-2/libnative_sample.so" failed to load previously
03-19 10:14:11.162: W/dalvikvm(6360): Exception Ljava/lang/UnsatisfiedLinkError; thrown while initializing Lcom/example/detectimage/CameraPreview;
03-19 10:14:11.172: D/AndroidRuntime(6360): Shutting down VM
03-19 10:14:11.172: W/dalvikvm(6360): threadid=1: thread exiting with uncaught exception (group=0x40f06ae0)
03-19 10:14:11.182: E/AndroidRuntime(6360): FATAL EXCEPTION: main

如果您還需要我的Android.mk文件

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
OPENCV_INSTALL_MODULES:=on
OPENCV_CAMERA_MODULES:=off
include D:\Development\OpenCV-2.4.8-android-sdk\sdk\native\jni\OpenCV.mk

LOCAL_C_INCLUDES:= D:\Development\OpenCV-2.4.8-android-sdk\sdk\native\jni\include
LOCAL_MODULE    := native_sample
LOCAL_CFLAGS    := -Werror -O3 -ffast-math
LOCAL_LDLIBS    += -llog


LOCAL_SRC_FILES := jni_part.cpp
include $(BUILD_SHARED_LIBRARY)

坦率地說,我已經搜索了整個資源,並嘗試了很多資源,它只是無法工作。 也許我是這個話題的新手,我無法遵循的某些先進的解決方案。 我希望我能在這里得到一些更好的理解。你的幫助非常感謝。

看起來這是一個運行時錯誤,您可以毫無問題地構建本機代碼。 為了在.apk中包含任何必要的.so文件,您需要在要部署的項目的lib /子目錄中使它們可用。

這可以像手動復制它們一樣簡單,但是ant應該足夠聰明,可以為你復制它。 如果它沒有這樣做,可能還會有其他事情發生。

另一種方法是靜態鏈接到OpenCV。 您可以通過在自己的Android.mk中包含OpenCV.mk之前添加此行來執行此操作:

OPENCV_LIB_TYPE :=STATIC

當然,這只是有意義的,如果您的OpenCV構建帶有靜態庫(lib * .a)。 您會注意到,通過靜態鏈接到OpenCV,您的.so文件將略微增加文件大小,但不再需要打包libopencv_java.so。 你的.so擁有OpenCV所需的一切。

總而言之,如果您的項目使用任何.so文件,請在.apk打包時將它們放在/ lib下,以便您的應用程序可以在啟動/運行時找到它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM