代码之家  ›  专栏  ›  技术社区  ›  c_steidl

NDK—从NDK中删除GNUSTL后出现的问题(r18版)

  •  3
  • c_steidl  · 技术社区  · 7 年前

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

    arguments '-DANDROID_STL=gnustl_static' externalNativeBuild app.gradle文件中的配置。

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

    通过添加这行代码,我成功地避免了在所有ndkr17c发行版的其余部分中NDK出现的任何问题。

    https://developer.android.com/ndk/downloads/revision_history

    删除现在不推荐使用的代码行会产生错误,而这个错误最初是产生上述问题的原因。现在的问题是什么是最新的等价物 参数'-DANDROID\u STL=gnustl\u static' ?

    '-DANDROID_STL=c++_static' 导致旧的错误

    先谢谢你。

    3 回复  |  直到 6 年前
        1
  •  15
  •   shizhen    6 年前

    正如@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

    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...
    
        2
  •  2
  •   Alex Cohn    7 年前

    更新OpenCV可能需要一段时间。同时,我建议将f退到ndkr16,后者用于构建opencvandroid二进制文件。

        3
  •  0
  •   Arthur    6 年前

    opencv release ,选择 下载,而不是android包。

    下载源文件后,cd到源文件的根目录。 打开CV-2.4.13.6 然后执行@y30提供的命令,并注意

    ... -DCMAKE\u TOOLCHAIN\u FILE=/Users/ihandysoft/Library/Android/sdk/ndk bundle/build/cmake/Android.TOOLCHAIN.cmake ...

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