代码之家  ›  专栏  ›  技术社区  ›  El_Loco

Android上的opencv链接错误

  •  1
  • El_Loco  · 技术社区  · 8 年前

    我正在努力 OpenCV 在Android上工作。我学过几门教程,到目前为止还没有成功。一种方法是 OpenCVManager 但是当我尝试这些样品时,它们不起作用。

    我现在尝试的方法是 NDK 并通过添加opencv CMake Android.mk .到目前为止还没有成功。一般来说,哪种方法是开始使用OpenCV和Android的最佳方法?

    我试图创建一个空矩阵 cv::Mat tmp 但是我总是会得到一个链接错误。

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

    我尝试过添加不同的呼叫,比如 -lopencv_core 等等。我不确定的一件事是如何链接。静态libs包含 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} )
    

    安卓.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)
    
    1 回复  |  直到 8 年前
        1
  •  0
  •   El_Loco    8 年前

    我遵循这个例子并编译了opencv。 https://github.com/sjfricke/OpenCV-NDK

    尽管如此 FaceDetection 崩溃,但这可能是因为 xml -文件未正确加载。