【问题标题】:How to use Asio (standalone from Boost) in Android NDK?如何在 Android NDK 中使用 Asio(独立于 Boost)?
【发布时间】:2013-01-03 08:56:19
【问题描述】:

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:\cygwin\bin\bash"
@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。问题在输出中显示。我一点头绪都没有。。

PS。没有 Asio 标签,所以我想 Boost-Asio 标签现在必须要做。

【问题讨论】:

    标签: android c++ android-ndk boost-asio


    【解决方案1】:

    这就是我所做的。

    Application.mk

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-27
      • 1970-01-01
      相关资源
      最近更新 更多