首页 > 解决方案 > 在应用程序中静态构建 OpenCV 失败“错误:对 'ippicvsRound_64f' 的未定义引用”

问题描述

我越来越缺少库:

3rdparty/ippicv/ippicv_lnx/iw/include/iw_own.h:189: error: undefined reference to 'ippicvsRound_64f'
...

但我已经包含了所有 3rd 方和 opencv 库:

# For more information about using CMake with Android Studio, read the
# documentation: https://d.android.com/studio/projects/add-native-code.html

# Sets the minimum version of CMake required to build the native library.

cmake_minimum_required(VERSION 3.4.1)

include_directories(${OpenCV_DIR}/jni/include)

set(STATIC_LIBS "${OpenCV_DIR}/staticlibs/${ANDROID_ABI}")

file(GLOB STUFF RELATIVE ${STATIC_LIBS} ${STATIC_LIBS}/*.a)

message(STATUS "OpenCV libs: ${STUFF}")

foreach(lib ${STUFF})
    add_library( ${lib} STATIC IMPORTED )
    set_target_properties(${lib} PROPERTIES IMPORTED_LOCATION ${STATIC_LIBS}/${lib})
endforeach()


set(STATIC_LIBS_OTHER "${OpenCV_DIR}/3rdparty/libs/${ANDROID_ABI}")

file(GLOB STUFF_OTHER RELATIVE ${STATIC_LIBS_OTHER} ${STATIC_LIBS_OTHER}/*.a)

message(STATUS "3rd party libs: ${STUFF_OTHER}")

foreach(lib_other ${STUFF_OTHER})
    add_library( ${lib_other} STATIC IMPORTED )
    set_target_properties(${lib_other} PROPERTIES IMPORTED_LOCATION ${STATIC_LIBS_OTHER}/${lib_other})
endforeach()



add_library( native-lib SHARED native-lib.cpp)

find_library(
        log-lib
        log
)


target_link_libraries(
        native-lib
        ${STUFF}
        ${STUFF_OTHER}
        z
        ${log-lib}
)

我还在 opencv 模块的 srcDirs 中添加了“native/staticlibs”、“native/3rdparty/libs”。并使其使用“-DANDROID_STL=c++_static”。

未构建 x86 和 x86_64 时错误消失。

完整代码位于:https ://github.com/EmmanuelMess/Reduced-OpenCV-Android

我错过了什么?

标签: androidc++opencvcmake

解决方案


推荐阅读