带有NDK的Android Studio:链接错误:对“ stderr”的未定义引用

时间:2018-08-09 12:35:34

标签: android-studio gradle android-ndk

我已经针对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参数

1 个答案:

答案 0 :(得分:0)

最可能的情况是您为android-23 +构建了opencv,但native-lib在其下具有minSdkVersion。参见https://android.googlesource.com/platform/ndk/+/master/docs/user/common_problems.md#using-mismatched-prebuilt-libraries