我已经针对Android armeabi-v7a编译了OpenCV静态库。
现在,我正在尝试通过Android Studio中的CMakeLists.txt文件将本机C ++代码与这些库链接,但这会失败,并出现以下奇怪错误:
~/opencv/modules/videoio/src/container_avi.cpp:0: error: undefined reference to 'stderr'
此代码来自libopencv_videoio.a
CMakeLists.txt文件最有趣的部分是这个
# linking with static libraries
target_link_libraries(native-lib
dnn ml objdetect shape stitching superres videostab calib3d features2d highgui videoio imgcodecs video photo imgproc flann core
)
不是应该自动查找标准库吗?
编辑1: 以下是我的Application.mk
...
NDK_TOOLCHAIN_VERSION := clang
APP_PLATFORM := android-21
APP_STL := c++_shared
...
NDK版本取自Changelog.md:r17b
编辑2:
如丹所建议,我已添加
“-DANDROID_PLATFORM = android-24”
cmake参数
答案 0 :(得分:0)
最可能的情况是您为android-23 +构建了opencv,但native-lib在其下具有minSdkVersion。参见https://android.googlesource.com/platform/ndk/+/master/docs/user/common_problems.md#using-mismatched-prebuilt-libraries。