dlib android版本号,android studio集成opencv4android + dlib 库 爬坑记

问题集合:html

1.std标准库问题:java

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

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架构平台。c++

2.运行时加载so库时报错:java.lang.UnsatisfiedLinkError: dlopen failed: library "libc++_shared.so" not found

须要使用 '-DANDROID_STL=c++_shared'来进行cmake编译:架构

android {

compileSdkVersion28defaultConfig {minSdkVersion19targetSdkVersion28versionCode1versionName"1.0"testInstrumentationRunner"androidx.test.runner.AndroidJUnitRunner"multiDexEnabledtrueexternalNativeBuild {

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 {

minifyEnabledfalseproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}

}

externalNativeBuild {

cmake {

path"CMakeLists.txt"}

}

dataBinding {

enabled= true}

compileOptions {

sourceCompatibility= 1.8targetCompatibility= 1.8}

buildToolsVersion= '28.0.3'sourceSets {

main {

jni.srcDirs= ['src/main/jniLibs/']

}

}

}

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

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

本文会持续更新。code

你可能感兴趣的:(dlib,android版本号)