android - qt pro文件中的libopencv_java3.so

标签 android c++ qt opencv android-ndk

我正在使用 Qt 和 OpenCV 制作一个 Android 应用。

它在桌面 Linux 上工作,但在 Android 上失败:

D/dalvikvm( 8059): Trying to load lib /data/app-lib/com.myselfxyz.testapp-1/libTestApp.so 0x421b4f98
E/dalvikvm( 8059): dlopen("/data/app-lib/com.myselfxyz.testapp-1/libTestApp.so") failed: Cannot load library: soinfo_link_image(linker.cpp:1673): could not load library "libopencv_java3.so" needed by "libTestApp"; caused by load_library(linker.cpp:771): library "libopencv_java3.so" not found

在我的设备上部署应用程序后,文件 libopencv_java3.so 位于 /data/app-lib/com 中的 libTestApp.so 旁边。 myselfxyz.testapp-1 目录,所以我不知道,为什么找不到它。

我正在使用:

  • Android NDK r10e
  • OpenCV-android-sdk 3.1.0
  • Qt 套件:armeabi-v7a(GCC 4.9、Qt 5.5.1)
  • 我的手机是 Android 版本 4.2.2,但我认为这无关紧要。

我的 qt pro 文件如下所示:

TEMPLATE = app
TARGET = TestApp

CONFIG += mobility c++11
MOBILITY += sensors

QT += qml quick widgets declarative sensors core multimedia

SOURCES += main.cpp \
    bridge.cpp \
    imageprocessor.cpp

INCLUDEPATH += /usr/lib/jvm/java-7-openjdk-i386/include \
    /usr/lib/jvm/java-7-openjdk-i386/include/linux \

linux:!android {
    INCLUDEPATH += /opt/OpenCV/include/
    LIBS += -L/opt/OpenCV/build/lib \
        -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_videoio
}

android {
    QT += androidextras
    ANDROID_OPENCV = /opt/OpenCV-android-sdk/sdk/native
    INCLUDEPATH += $$ANDROID_OPENCV/jni/include
    ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android
    LIBS += -L$$ANDROID_OPENCV/libs/armeabi-v7a \
        -L$$PWD/android/libs/armeabi-v7a \
        -L$$OUT_PWD \
        -lopencv_core -lopencv_features2d -lopencv_flann -lopencv_highgui -lopencv_imgcodecs -lopencv_imgproc -lopencv_ml -lopencv_objdetect \
        -lopencv_photo -lopencv_shape -lopencv_stitching -lopencv_superres -lopencv_ts -lopencv_video -lopencv_videoio -lopencv_videostab \
        -lopencv_java3
}

RESOURCES += qml.qrc

# Additional import path used to resolve QML modules in Qt Creator's code model
QML_IMPORT_PATH =

# Default rules for deployment.
include(deployment.pri)

HEADERS += \
    bridge.h \
    imageprocessor.h

DISTFILES += \
    android/AndroidManifest.xml \
    android/res/values/libs.xml \
    android/src/com/myselfxyz/testapp/JniExport.java \
    android/src/com/myselfxyz/testapp/TestApp.java

ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android

最佳答案

此答案假设您已经设法在没有 opencv 的情况下运行您的应用程序,因此所有其余的都已相应设置。

转到您的项目设置,找到“构建步骤”。

应该有一个名为Build Android APK 的步骤。点击详细信息。在 Additional libraries 列表中,添加 libopencv_java3.so。它通常在 \sdk\native\libs\armeabi-v7a 文件夹中。

关于android - qt pro文件中的libopencv_java3.so,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38139154/

相关文章:

android - 初始化期间的 Firebase Crashlytics 错误

c++ - 矩阵模板实现的不好的方面

c++ - 使用 CRTP 继承

c++ - QCoreApplication QApplication 与 WMI

c++ - 创建教程模式

android - 如何设置确定性圆形进度条的二次色

Android 录制方 block 视频并拼接

android - Google Play 和 Amazon App Store 的 2 套应用内购买代码如何维护

c++ - Eclipse 显示错误但项目编译正常

qt - Qt中Utf-32字符的长度