【问题标题】:Undefined References Error OpenCv Android with ndk 18 (c++_static)Undefined References Error OpenCv Android with ndk 18 (c++_static)
【发布时间】:2018-09-21 04:13:28
【问题描述】:

我更新了 Android Studio 以使用 ndk18 并进行了更改:

APP_STL := c++_static

这会导致 OpenCv 中出现一堆链接器错误:

../thirdparty/opencv-android-sdk/sdk/native/jni/../libs/arm64-v8a/libopencv_objdetect.a(detection_based_tracker.cpp.o): In function `cv::DetectionBasedTracker::updateTrackedObjects(std::vector<cv::Rect_<int>, std::allocator<cv::Rect_<int> > > const&)':
detection_based_tracker.cpp:(.text._ZN2cv21DetectionBasedTracker20updateTrackedObjectsERKSt6vectorINS_5Rect_IiEESaIS3_EE+0xad8): undefined reference to `std::__throw_length_error(char const*)'
../thirdparty/opencv-android-sdk/sdk/native/jni/../libs/arm64-v8a/libopencv_objdetect.a(detection_based_tracker.cpp.o): In function `_GLOBAL__sub_I_detection_based_tracker.cpp':
detection_based_tracker.cpp:(.text.startup._GLOBAL__sub_I_detection_based_tracker.cpp+0x18): undefined reference to `std::ios_base::Init::Init()'
detection_based_tracker.cpp:(.text.startup._GLOBAL__sub_I_detection_based_tracker.cpp+0x1c): undefined reference to `std::ios_base::Init::~Init()'
detection_based_tracker.cpp:(.text.startup._GLOBAL__sub_I_detection_based_tracker.cpp+0x34): undefined reference to `std::ios_base::Init::~Init()'

如何解决这个问题?

我正在使用 OpenCv android sdk 3.1。

【问题讨论】:

    标签: android opencv android-ndk


    【解决方案1】:

    你需要针对 libc++ 重建 opencv。

    【讨论】:

    【解决方案2】:

    你需要基于 NDK 18 重建 opencv,我已经用 opencv 2.4 完成了

    https://github.com/2666fff/opencv-for-android

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-26
      • 2015-12-15
      • 2017-09-16
      • 2022-06-12
      • 2018-01-08
      相关资源
      最近更新 更多