vs 编译android so

android NDK增加log调试

 

1. 首先建立log.h文件

#include
#define  LOG_TAG    "Android"
#define  LOGI(...)  __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__)
#define  LOGE(...)  __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__)
#define  LOGD(...)  __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__)

2. 在Android.mk中增加编译支持

LOCAL_LDLIBS    :=  -llog

3. 就可以在其他文件中引入log.h,相关的log函数就可以调用了
 

参考:https://blog.csdn.net/kobbbb/article/details/88791055

选择Rlease,ARM平台,配置属性

常规配置,注意STL的使用,前面有提到的

 

配置包含目录dlib:dlib for android下的dlib并没有头文件,直接用原dlib的即可,OpenCV:third_party\OpenCV-android-sdk\sdk\native\jni\include,注意,库目录不是在这里配置

 

C/C++的属性配置,划红线的三个地方

 

接下来就是链接器,有几个地方很关键

第一个是附加库目录:把之前生成的.a的目录路径写上,再加上OpenCV-android-sdk\sdk\native\3rdparty\libs\armeabi-v7a和OpenCV-android-sdk\sdk\native\staticlibs\armeabi-v7a(我这里用的是armeabi-v7a,可以根据需要修改)

第二个是配置库依赖项,注意,不是附加依赖项!!!敲重点,是库依赖项,上文的教程也有提到

第三个是库依赖项的顺序,这个,真的让我很无语,平时用opencv_world用习惯了,imgcodecs,imgproc,core这三个都没太关注其各自依赖,没错,顺序就是这样,一定要从上到下排列下来,同时,我们还需要cpufeatures,tegra_hal,tbb,libtiff这些,顺序也必须按照这样,而且要在opencv之后

最后说一个附加选项,之前写了一个算法需要用到math头文件,打包.so的时候就碰到一些函数用不了的错误,加了附加选项就可以了,大概就是NDK对c++的一些支持的东西,这里有api:NDK API

 

然后,Build,完成

总结下来,坑虽然踩了很多,但是难度其实没那么大,什么时候微软大法可以把编译.a那部分也集成进来,那就更加方便了,或者其实已经有,希望能有大神来指点迷津。

 

在项目属性中,添加上第三方库的依赖:

上面的m就是链接了 libm.so。

还有一种方式:

你可能感兴趣的:(c++,android开发)