有人移植并在Android上使用Boost吗?
我找到了为android(https://github.com/MysticTreeGames/Boost-for-Android)构建boost的工具,构建成功,并且我有静态提升库。 但是,当我想在简单的Android应用程序中使用它时:
#include <jni.h>
#include "boost/thread.hpp"
void f()
{
};
我有很多编译错误:重新定义,未声明等等。似乎它涉及NDK标准标题。 我的Android.mk看起来像:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
TARGET_PLATFORM := android-8
LOCAL_MODULE := Boost
LOCAL_CFLAGS := -DMYSTIC -I$(LOCAL_PATH)/boost/include/
LOCAL_LDLIBS := -L$(LOCAL_PATH)/external/boost/lib/
LOCAL_CPPFLAGS := -fexceptions
LOCAL_CPPFLAGS += -frtti
LOCAL_CPPFLAGS += -DBOOST_THREAD_LINUX
LOCAL_CPPFLAGS += -DBOOST_HAS_PTHREADS
LOCAL_CPPFLAGS += -D__arm__
LOCAL_CPPFLAGS += -D_REENTRANT
LOCAL_CPPFLAGS += -D_GLIBCXX__PTHREADS
LOCAL_CPPFLAGS += -DBOOST_HAS_GETTIMEOFDAY
LOCAL_SRC_FILES := main.cpp
include $(BUILD_SHARED_LIBRARY)
此外,我尝试使用Crystax_NDK_r4和Android_NDK_r5b进行构建,但它还没有解决问题。
有什么想法吗?
答案 0 :(得分:6)
我已经解决了这个问题。我指定了NDK的错误路径。脚本也修补了CrystaX NDK。所以现在它有效!
答案 1 :(得分:4)
我刚刚发现了一种在Android NDK下构建增强的简单方法,它不需要修补增强功能。
我不使用Android.mk来构建boost,而是使用standalone-toolchain来构建,只需链接CodeSourcery的工具链。
首先准备NDK工具链:
将NDK工具链作为独立工具链安装。请参阅$ NDK / docs / STANDALONE-TOOLCHAIN.html
将交叉工具链的bin路径添加到PATH
在Boost prj中构建boost.Build工具:
./ bootstrap.sh
echo“using gcc:android:arm-linux-androideabi-g ++;” &GT; $ HOME /用户config.jam中
构建示例
./ b2 --prefix = $ HOME / mybuild --with-thread --with-system toolset = gcc-android threading = multi link = static install
我希望这些可以帮到你。
答案 2 :(得分:1)
您可以下载一系列脚本,这些脚本将为Android和ios下载并构建一些流行的c / c ++开源库,包括在此位置进行提升。