首页 > 解决方案 > android上的OpenCV链接错误

问题描述

我正在尝试OpenCV在 Android 上工作。我已经遵循了几个教程,但到目前为止没有成功。一种方法是OpenCVManager,但是当我尝试示例时,它们不起作用。

我现在尝试的方法是通过and使用NDK和添加 OpenCV 。至今没有成功。一般来说,哪种是开始使用 OpenCV 和 Android 的最佳方法?CMakeAndroid.mk

我尝试只创建一个空矩阵cv::Mat tmp,但总是出现链接错误。

../../../../src/main/jniLibs/jni/include/opencv2/core/mat.inl.hpp:704: error: undefined reference to 'cv::fastFree(void*)'

我试过添加不同的调用-lopencv_core,诸如此类。我不确定的一件事实际上是如何链接。有包含libopencv_core.so等等的静态库。但是,jni/libs/仅包含libopencv_java3.so. 我应该链接哪些库以及如何链接?

CMakeLists.txt

cmake_minimum_required(VERSION 3.4.1)

include_directories(src/main/jniLibs/jni/include)
add_library( lib_opencv SHARED IMPORTED )
set_target_properties(lib_opencv PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/src/main/jniLibs/libs/${ANDROID_ABI}/libopencv_java3.so)
add_library( native-lib SHARED src/main/cpp/native-lib.cpp )


find_library( # Sets the name of the path variable.
              log-lib

              # Specifies the name of the NDK library that
              # you want CMake to locate.
              log )

target_link_libraries( # Specifies the target library.
                       native-lib

                       # Links the target library to the log library
                       # included in the NDK.
                       ${log-lib} )

Android.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

OPENCV_LIB_TYPE:=SHARED
OPENCV_CAMERA_MODULES:=on
OPENCV_INSTALL_MODULES:=on

include {/home/myname/Code/Libraries/Android/OpenCV-android-sdk/sdk/native/jni/OpenCV.mk}

LOCAL_SRC_FILES  += $(LOCAL_PATH)/native-lib.cpp
LOCAL_C_INCLUDES += {/home/myname/Code/Libraries/Android/OpenCV-android-sdk/sdk/native/jni/include}
include $(PREBUILT_STATIC_LIBRARY)
LOCAL_LDLIBS     += -llog -ldl
LOCAL_CFLAGS    += -DOPENCV_OLDER_VISION

LOCAL_CPP_FEATURES += exceptions (Recommended)
LOCAL_CPPFLAGS += -fexceptions


LOCAL_MODULE     := native-lib

include $(BUILD_SHARED_LIBRARY)

标签: androidopencv

解决方案


我按照这个例子编译了 OpenCV。https://github.com/sjfricke/OpenCV-NDK

虽然FaceDetection崩溃了,但这可能是因为相关xml的文件没有正确加载。


推荐阅读