Android NDK编译踩坑记录

1,411 阅读1分钟

持续更新的文档,遇到了就写一下

android library "libomp.so" not found.

错误原因:当gradle中使用命令

 cppFlags "-fopenmp"
 cFlags "-fopenmp"

将会自动导入libomp的库。在低于20版本的NDK-Bundle中,使用的是.so文件,而在高于20版本的NDK-Bundle中使用的是.a文件。

解决办法:

使用低版本的NDK-Bundle

当提示java方法对应的C函数无法找到

错误原因:

Cmake和ndk-build采用的是自动生成java2c的头文件,java2c的函数使用的是extern "C"作为替代,idea自动生成的方法会自动引用extern "C",但是代码里面C++和C的代码进行混编就会出现问题。

解决办法:

使用extern "C"{},把所有java2c的函数都括起来。