【发布时间】:2019-12-17 15:38:57
【问题描述】:
我有一个用 OpenCV 用 C++ 编写的应用程序,用于 Android SDK。目前我们正在使用 OpenCV 3.2.0,但我们需要迁移到 OpenCV 4.1.1。我正在尝试为不同架构使用更少的模块来构建它。
我使用的是 Opencv 4.1.1; ndk 16b; cmake 3.13.2
这是命令行
cmake \ -DANDROID_ABI:STRING=$currentArch \ -DANDROID_TOOLCHAIN_NAME:STRING=$currentArchVersion \ -D ANDROID_NDK:PATH="/Users/analivia/Library/Android/sdk/ndk-bundle" \ -D ANDROID_NDK_HOST_X64:BOOL="1" \ -D ANDROID_NATIVE_API_LEVEL=24 \ -D ANDROID_TOOLCHAIN=clang \ -D ANDROID_STL=c++_static \ -D CMAKE_TOOLCHAIN_FILE:FILEPATH="/Users/analivia/Library/Android/sdk/ndk-bundle/build/cmake/android.toolchain.cmake" \ -D CMAKE_CXX_FLAGS_MINSIZEREL:STRING="-Os -ffunction-sections -fdata-sections -Wl,--gc-sections -D NDEBUG" \ -D CMAKE_CXX_FLAGS_RELEASE:STRING="-Os -ffunction-sections -fdata-sections -Wl,--gc-sections -D NDEBUG" \ -D CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING="-Os -g -D NDEBUG" \ -D CMAKE_C_FLAGS_RELEASE:STRING="-Os -ffunction-sections -fdata-sections -Wl,--gc-sections -D NDEBUG" \ -D BUILD_ANDROID_EXAMPLES:BOOL="0" \ -D BUILD_opencv_video:BOOL="0" \ -D BUILD_WITH_DEBUG_INFO:BOOL="0" \ -D WITH_JASPER:BOOL="0" \ -D WITH_JPEG:BOOL="1" \ -D BUILD_opencv_photo:BOOL="0" \ -D BUILD_opencv_videoio:BOOL="0" \ -D BUILD_opencv_ts:BOOL="0" \ -D WITH_CAROTENE:BOOL="0" \ -D BUILD_opencv_stitching:BOOL="0" \ -D CMAKE_C_FLAGS:STRING="" \ -D BUILD_FAT_JAVA_LIB:BOOL="0" \ -D BUILD_OPENEXR:BOOL="0" \ -D BUILD_PERF_TESTS:BOOL="0" \ -D BUILD_opencv_videostab:BOOL="0" \ -D WITH_EIGEN:BOOL="0" \ -D BUILD_JASPER:BOOL="0" \ -D WITH_TBB:BOOL="1" \ -D WITH_IPP:BOOL="0" \ -D WITH_WEBP:BOOL="0" \ -D BUILD_opencv_superres:BOOL="0" \ -D BUILD_opencv_shape:BOOL="0" \ -D BUILD_opencv_dnn:BOOL="1" \ -D BUILD_PACKAGE:BOOL="0" \ -D BUILD_TESTS:BOOL="0" \ -D WITH_OPENEXR:BOOL="0" \ -D WITH_CUDA:BOOL="0" \ -D WITH_CUFFT:BOOL="0" \ -D BUILD_PNG:BOOL="1" \ -D BUILD_JPEG:BOOL="1" \ -D BUILD_DOCS:BOOL="0" \ -D BUILD_TIFF:BOOL="0" \ -D WITH_PNG:BOOL="1" \ $opencvSource
我添加到 Android 项目,但我得到很多未定义的 opencv 函数引用
Android Studio 使用 cmake 3.10.2
例子:
error: undefined reference to 'cv::cvtColor(cv::_InputArray const&, cv::_OutputArray const&, int, int)' error: undefined reference to 'cv::extractChannel(cv::_InputArray const&, cv::_OutputArray const&, int)' error: undefined reference to 'cv::Mat::copyTo(cv::_OutputArray const&) const'
【问题讨论】: