android studio集成opencv4android + dlib 库 爬坑记

问题集合:

1.std标准库问题:

错误信息例如:no member named 'to_string' in namespace 'std'

NDK高版本对std标准库的支持并不良好,导致,接入opencv后,会因为std库的问题报错;
解决方案:
  1)使用低版本ndk 如ndk14
  2)使用高版本NDK重新编译opencv库,方法见:https://www.cnblogs.com/qq2523984508/p/9912221.html
  3)opencv3的版本一定无法使用高版本的ndk,可以选择opencv4的版本库,因为opencv4讲std标准库自己定义了cv库,所以,可以使用opencv4来配合高版本的ndk,但中间可能对某些cpu架构无法得到支持,比如比较老旧的armeabi。应该说高版本ndk都放弃了比较老旧armeabi架构平台。

 

2.运行时加载so库时报错:java.lang.UnsatisfiedLinkError: dlopen failed: library "libc++_shared.so" not found
需要使用 '-DANDROID_STL=c++_shared'来进行cmake编译:

android {
    compileSdkVersion 28
    defaultConfig {
        minSdkVersion 19
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
        externalNativeBuild {
            cmake {
                arguments '-DANDROID_PLATFORM=android-28','-DANDROID_TOOLCHAIN=clang', '-DANDROID_STL=c++_shared', '-DCMAKE_BUILD_TYPE=Release ..'
//                arguments '-DANDROID_PLATFORM=android-28','-DANDROID_TOOLCHAIN=clang','-DENABLE_CXX11=ON','-DCMAKE_BUILD_TYPE=Release ..'
                cppFlags "-std=c++14 -O3 -frtti -fexceptions"
            }
        }
        ndk {
            abiFilters 'armeabi-v7a','arm64-v8a'
        }
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    externalNativeBuild {
        cmake {
            path "CMakeLists.txt"
        }
    }
    dataBinding {
        enabled = true
    }
    compileOptions {
        sourceCompatibility = 1.8
        targetCompatibility = 1.8
    }
    buildToolsVersion = '28.0.3'
    sourceSets {
        main {
            jni.srcDirs = ['src/main/jniLibs/']
        }
    }
}

 摘要来自:http://blog.sina.com.cn/s/blog_49b3ba190102z0i1.html

 

3.NDK编译问题:在NDK编译时经常会编译不过报错,可能需要检查下android项目路径,NDK编译路径不能太深太长,否则会编译出问题。猜测可能和C++活着CMACKE有关

本文会持续更新。

posted @ 2019-10-12 15:41  summer_xx  阅读(1882)  评论(0)    收藏  举报