在 OpenCV android 应用程序中启用“libc++_shared.so”

Ran*_*van 6 c++ android opencv cmake android-studio

我想用 OpenCV 实现一个项目。我已经在项目中导入了 OpenCV SDK,出现如下错误:-

java.lang.UnsatisfiedLinkError: dlopen failed: library "libc++_shared.so" not found
Run Code Online (Sandbox Code Playgroud)

我已在 stackoverflow 中阅读了您的解决方案。链接如下:-

Android Studio CMake - 共享库缺少 libc++_shared.so?CMake 可以捆绑这个吗?

我试图从 github 实现一个解决方案:-

https://github.com/jomof/ndk-stl/blob/master/ndk-stl-config.cmake

我找不到任何解决方案。

我只想将“libc++_shared.so”打包到 apk 中,并且 SDK 在我的项目中正常运行。我对构建工具 cmake 或 ndk-build 一无所知。

请给出一个简单的解决方案,以便我可以在应用程序中启用“libc++_shared.so”,以便 OpenCV 项目正常运行。

我的错误日志如下所示。

在此处输入图片说明

我的项目结构如下:-

在此处输入图片说明

早些时候我添加了 OpenCV SDK 中提到的 CMakeLists.txt 作为

cmake_minimum_required(VERSION 3.6)

 # dummy target to bring libc++_shared.so into packages
 add_library(opencv_jni_shared STATIC dummy.cpp)
Run Code Online (Sandbox Code Playgroud)

以及可能在 apk 中包含“libc++_shared.so”的 dummmy.cpp 文件。然而没有结果。

请帮助解决。

小智 7

尝试将以下行添加到应用程序部分的 build.gradle 文件中。

参数“-DANDROID_STL=c++_shared”

必须将其添加到 externalNativeBuild 子部分。

android {
    .
    .
    defaultConfig {
        .
        externalNativeBuild {
            cmake {
                .
                arguments "-DANDROID_STL=c++_shared"
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

顺便说一句:Ranjit Vamadevan,我在这里没有看到您的解决方案,但您提到您直接在评论中找到了一个。我无法在那里回答。您也可以跟我们分享一下吗?