如何在Android NDK中使用Asio(独立于Boost)

How to use Asio (standalone from Boost) in Android NDK?

本文关键字:Asio 独立 Boost Android NDK      更新时间:2023-10-16

Asio(没有Boost)应该是可用的头只有对吗?

默认情况下,Asio是一个仅限头文件的库。(http://think-async.com)

我知道Asio内部仍然依赖于Boost。

这是我的设置。

Android.mk

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE        := gatelib
LOCAL_SRC_FILES     := gatelib.cpp
LOCAL_C_INCLUDES    += /cygdrive/l/asio-1.5.3/include
LOCAL_C_INCLUDES    += /cygdrive/l/boost/boost_1_49_0
include $(BUILD_SHARED_LIBRARY)

Application.mk

APP_STL := stlport_static
APP_CFLAGS += -DBOOST_DATE_TIME_NO_LIB -DBOOST_REGEX_NO_LIB

gatelib.cpp

#include <jni.h>
#include <asio.hpp>
#ifdef __cplusplus
extern "C" 
{
#endif
    // rest of code ...
#ifdef __cplusplus
}
#endif

构建脚本

@echo on
@set BASHPATH="L:cygwinbinbash"
@set PROJECTDIR="/cygdrive/l/AsioAndroid/AsioDemo"
@set NDKDIR="/cygdrive/l/android-ndk-r8c/ndk-build"
%BASHPATH% --login -c "cd %PROJECTDIR% && %NDKDIR%
@pause:

http://pastebin.com/XiJjvNmp

所以基本上,我想实现的是,让Asio在Android上工作(通过NDK)。是的,只是 Asio本身,而不是Boost中包含的Asio。在输出中提出了问题。我一点儿也不知道……

p。没有Asio标签,所以我想现在只能用Boost-Asio标签了。

我是这么做的

Application.mk

APP_STL := gnustl_static
APP_CFLAGS += -DBOOST_DATE_TIME_NO_LIB -DBOOST_REGEX_NO_LIB
APP_CPPFLAGS += -fexceptions

线索和提示都在Stack Overflow。一旦拼凑起来,它就起作用了!