android - NDK - GNUSTL 从 NDK(修订版 r18)中删除后出现的问题

标签 android android-studio opencv android-ndk

今天我将我的 Android Studio NDK 更新到最新版本 18.0.5002713。安装过程成功后,我尝试重新运行我的应用程序,但未能成功。不断出现的错误如下:org.gradle.api.ProjectConfigurationException: A problem occurred configuring project ':app'.

过去,我在 NDK 更新后运行我的应用程序时遇到了问题,但能够通过将 arguments '-DANDROID_STL=gnuSTL_static' 添加到 externalNativeBuild 来解决这些问题app.gradle 文件中的配置。

原始问题:(OpenCV - undefined reference to 'cv::CascadeClassifier::detectMultiScale() after NDK update)

通过添加这行代码,我设法在所有 NDK r17c 版本的其余部分避免了 NDK 出现任何类型的问题。

不幸的是,在版本 r18 中,对 GNUSTL 的支持与 gabi++ 和 STLport 一起被删除了。

查看 NDK 修订历史:https://developer.android.com/ndk/downloads/revision_history

删除现在已弃用的代码行会产生最初导致上述问题的错误。现在的问题是什么是 arguments '-DANDROID_STL=gnuSTL_static' 的最新等价物?

编辑:使用 '-DANDROID_STL=c++_static' 导致旧错误

提前谢谢你。

最佳答案

正如@Michael 已经建议的,您可以使用 libc++ 重建 OpenCV。

这样做:

cd $OPENCV_SRC
mkdir build
cd build
cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_DIR/ndk-bundle/build/cmake/android.toolchain.cmake -DANDROID_ABI="arm64-v8a" -DANDROID_STL=c++_static  -DCMAKE_BUILD_TYPE=Release -DANDROID_NATIVE_API_LEVEL=android-24 ..
make install
cd install #the sdk will be here...

注意: 使用“opencv-3.4.1”+ ndk18 测试


@shizhen 编辑

在 macOS 上验证,应在 cmake 命令后添加 .. 以使以下错误消失。

CMake Error: The source directory "/opencv-3.4.1/build"does not appear to contain CMakeLists.txt.

更新如下:

cd $OPENCV_SRC
mkdir build
cd build
cmake .. -DCMAKE_TOOLCHAIN_FILE=$ANDROID_DIR/ndk-bundle/build/cmake/android.toolchain.cmake -DANDROID_ABI="arm64-v8a" -DANDROID_STL=c++_static  -DCMAKE_BUILD_TYPE=Release -DANDROID_NATIVE_API_LEVEL=android-24 
make install
cd install #the sdk will be here...

关于android - NDK - GNUSTL 从 NDK(修订版 r18)中删除后出现的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52410712/

相关文章:

c++ - 过滤器组的 Opencv getGaborKernel 参数

java - 如何通过在布局中使用更多 ListView 来克服这个问题

android - 在尝试每种变体后,AudioRecorder 无法初始化

android - 无法解决:com.android.support:appcompat-v7:27.0.0

android - 在 Android Studio 中导入 Cordova 项目

android - android studio 立即删除我的复制粘贴导入语句

xcode - 使用OpenCV仅检测圆

android - RelativeLayout 中 XML 文件中 View 的 getTop()/getLeft 不起作用

android-studio - Android Studio : Error The filename, 目录名或卷标语法不正确

python - opencv中的单应性和图像缩放