我编译了针对 android armeabi-v7a 的 OpenCV 静态库。
现在,我正尝试通过 Android Studio 中的 CMakeLists.txt 文件将我的 native 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
...
取自 Changelog.md 的 NDK 版本:r17b
编辑 2:
按照 Dan 的建议,我添加了
"-DANDROID_PLATFORM=android-24"
cmake 参数
最佳答案
最有可能的情况是您为 android-23+ 构建了 opencv,但 native-lib 的 minSdkVersion 低于它。参见 https://android.googlesource.com/platform/ndk/+/master/docs/user/common_problems.md#using-mismatched-prebuilt-libraries .
关于android-studio - 带有 NDK : link error : undefined reference to 'stderr' 的安卓工作室,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51767214/