Ubuntu下编译boost for Android
下载https://github.com/moritz-wundke/Boost-for-Android
解压后进入目录
运行 ./build-android.sh $(NDK_ROOT)
NDK_ROOT就是ndk-build所在的那个目录
然后会自动下载源码进行编译,NDK r19以上会自动选择c++_shared runtime library,会下载1.70版,然后生成多个ABI的库
若要选择其它的运行时库等等,需要修改build-android.sh???具体不会
生成后在Android studio里使用,如下配置cmake
##########添加boost库 begin######### #因为不存在findboost.cmake所以手动配置 #之后就可使用后就可用${Boost_INCLUDE_DIR}和${Boost_LIBRARIES}了 #set(Boost_ADDITIONAL_VERSIONS "1.70") set(BOOST_ROOT /home/hk/Android/boost/${ANDROID_ABI}) set(Boost_INCLUDE_DIR ${BOOST_ROOT}/include/boost-1_70) set(Boost_LIBRARY_DIR ${BOOST_ROOT}/lib) #用通配符同时添加多个lib库文件依赖 file(GLOB Boost_LIBRARIES "${Boost_LIBRARY_DIR}/libboost*.a") include_directories(${Boost_INCLUDE_DIR}) ##########添加boost库 end######################################
这样链接
#链接库 target_link_libraries( native-lib ${Boost_LIBRARIES} )
测试代码为
//测试boost extern "C" JNIEXPORT jstring JNICALL Java_com_example_myvio_MainActivity_stringFromJNI( JNIEnv *env, jobject /* this */) { std::string hello = "Hello MyVIO"; //boost::dynamic_bitset<> db4(std::string("0100")); //db4.flip();//1011 /*for(int i=0;i<4;i++) if(db4[i]==1) hello=hello+"1"; else hello=hello+"0";*/ boost::dynamic_bitset<> db4(4, BOOST_BINARY(1010)); db4[0] &= 1; db4[1] ^= 1; //注意右边是低位 for(int i=0;i<4;i++) if(db4[i]==1) hello=hello+"1"; else hello=hello+"0"; return env->NewStringUTF(hello.c_str()); }