相关疑难解决方法(0)

如何将boost库(包括shared_ptr)与Android NDK和STLport一起使用

这更像是一个答案,而不是一个问题,因为我已经弄明白了,至少就干净地编译图书馆而言.对我来说,主要问题是让shared_ptr工作.

配料:

Boost v.1.45.0

STLport的版本位于http://www.anddev.org/viewtopic.php?p=29939.

NDK的版本r4b.

路线:

在你的Android.mk文件中添加:

LOCAL_CFLAGS += -DBOOST_EXCEPTION_DISABLE -D_STLP_NO_EXCEPTIONS -DOS_ANDROID -D_STLP_USE_SIMPLE_NODE_ALLOC
Run Code Online (Sandbox Code Playgroud)

在stlport/stl/_string.h的第613行删除对__stl_throw_length_error的调用.如果您愿意,可以使用_STLP_NO_EXCEPTIONS.

在第261行之后编辑boost/boost/smart_ptr/shared_ptr.hpp以消除对shared_ptr构造函数中对boost :: throw_exception的调用.我在方法的整个主体周围使用了#ifndef BOOST_EXCEPTION_DISABLE.(但请参阅下面的答案.)

接下来你需要提供一些缺失的部分.使用以下内容创建头文件:

#ifdef OS_ANDROID

#include <exception>

namespace std
{
    struct bad_alloc : public exception { bad_alloc operator()(){}};
}

#endif
Run Code Online (Sandbox Code Playgroud)

和一个带有精简异常类的源文件,以支持bad_alloc:

#ifdef OS_ANDROID

#include <exception>

namespace std
{
    exception::exception() {}
    exception::~exception() {}
    const char* exception::what() const {}
}

#endif
Run Code Online (Sandbox Code Playgroud)

在包含boost/shared_ptr.hpp的任何地方都包含标题.编译源代码并将其添加到库中.

c++ boost stlport android-ndk

57
推荐指数
1
解决办法
2万
查看次数

官方"Boost库"支持Android和iOS?

这个问题是继续我应该在Android中选择Boost Asio或Aysnc Socket线程吗?问:

Boost库旨在广泛使用,并可在各种应用程序中使用,但Android和iOS尚无官方支持

  1. 是否有任何特定原因,例如未针对嵌入式设备进行优化?还是其他任何原因?
  2. 有没有人知道在Android或iOS上使用Boost构建的任何应用程序?
  3. 是否建议将升级库用于网络密集型应用程序,从而产生多线程进行通信?

仅供参考.我一直在使用以下链接创建示例Android应用程序,但尚未成功:(

https://github.com/MysticTreeGames/Boost-for-Android

http://www.codexperiments.com/android/2011/05/tips-tricks-building-boost-with-ndk-r5/

在android中包含Boost C++库

如何将boost库(包括shared_ptr)与Android NDK和STLport一起使用

https://sites.google.com/site/fourdollars/android/android-mk

https://groups.google.com/forum/?fromgroups=#!topic/android-ndk/4lxhsKFe7Ho

http://www.crystax.net/trac/ndk/ticket/6

Android NDK R5和支持C++异常

提前致谢.

android boost boost-asio android-ndk ios

51
推荐指数
4
解决办法
3万
查看次数

标签 统计

android-ndk ×2

boost ×2

android ×1

boost-asio ×1

c++ ×1

ios ×1

stlport ×1