我有一个用c++编写的应用程序,它使用OpenCV和Android。目前我们正在使用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使用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'
发布于 2019-08-19 09:26:13
最后,我使用gcc作为编译器,gnustatic作为STL和opencv的工具链。这是最后的命令
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_SDK_ROOT:PATH="/Users/analivia/Library/Android/sdk" \
-D CMAKE_TOOLCHAIN_FILE:FILEPATH="$opencvSource/platforms/android/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="1" \
-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_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" \
https://stackoverflow.com/questions/57437790
复制相似问题