2

在我的 Android 应用程序中,我需要构建 websocketpp ( http://www.zaphoyd.com/websocketpp ) 和 libjingle ( https://code.google.com/p/libjingle/ ),然后我遇到了以下问题:

websocketpp 正在使用 boost 库 (www.boost.org),我可以通过以下方式构建它:

APP_STL         := gnustl_static

但是当我链接 libjinge 库时,使用这个设置,我得到了错误:

undefined reference to 'std::__node_alloc::_M_deallocate(void*, unsigned int)'

如果我更改为在 Application.mk 中使用 stlport:

APP_STL         := stlport_static

然后在编译websocketpp时出现错误:

fatal error: array: No such file or directory

websocketpp 包括我只能在这里找到的数组:

sources/cxx-stl/gnu-libstdc++/4.8/include/array

我无法同时链接 stlport 和 gnustl 库,因为我收到有关重复定义的错误消息。

那么如何为我的可以同时使用 tlport 和 gnustl 的项目解决这个问题呢?

[更新]

项目中肯定不能同时使用stlport和gnustl,所以只好二选一。WebRTC 正在使用 stlport,而 gnustl 在 GPL 下,因此 stlport 应该是更好的选择。

我可以通过对文件“boost/tools/build/v2/user-config.jam”进行一些更改来构建 boost 库(由 websocketpp 使用):

<compileflags>-I$(AndroidNDKRoot)/sources/cxx-stl/stlport/stlport
using stlport : android : $(AndroidNDKRoot)/sources/cxx-stl/stlport/stlport ;

并使用 stdlib=stlport-android 选项运行 bjam。

编译链接成功。但是,当我运行我的应用程序时,它会在执行 boost 库中的某些代码时崩溃。

有人在使用 stlport 在 Android 上构建和运行 boost 库有什么运气吗?

4

0 回答 0