android - Undefined References Error OpenCv Android with ndk 18 (c++_static)
问题描述
我更新了 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。
解决方案
您需要针对 libc++ 重建 opencv。
推荐阅读
- json - SQLite 提取 JSON Massive 并加入他
- squarespace - 将标识符添加到方形空间部分
- exchange-server - Microsoft Exchange 加载项开发中是否允许外部 API 调用?
- javascript - Material UI - 提供给 ButtonBase 的 `component` 道具无效。请确保在此自定义组件中呈现 children 道具
- linux - 如何在Linux上同时流式传输网络摄像头和录制?
- javascript - 从 addEventListener 中提取函数
- spring-boot - tomcat 在项目根 url 上返回 404
- typescript - 在现有的打字稿反应项目中安装故事书会在故事中引发错误
- angular - 如何将模板中的 p-checkbox 与 [formcontrol] 关联?
- firebase-realtime-database - 如何让 Firebase 实时数据库将不需要的网站列入白名单?