2011-09-24 66 views
2

我使用的是最新的Android NDK R6B建立我的共享对象。此库不使用任何类型的STL的所有,但生成的.so包括许多STL类的东西的std :: bad_alloc_what(无效)等等,这大大增加了二进制的大小。发布版本也包含这个垃圾。 APP_STL在任何地方都没有定义,NDK r5b也只生成使用函数的小二进制。它是r6b的bug吗?我如何用r6b构建没有STL的东西?如何在没有STL的情况下构建Android NDK .so?

+0

这不是一个错误,但我们不得不接受这样的事实:http://code.google.com/p/android/issues/detail?id=19881 –

回答

0

如果您正在使用,也就是说,new那么你就含蓄地使用了std::bad_alloc例外的标准库。除非你调用new无掷版本,这将改用std::nothrow。如果你不使用标准库,那么它将不会被链接。只要确保你没有,如果这就是你想要的,或者只是移动到C?

+0

我我确定我不在任何地方使用STL,因为正如我所说的,r5b在没有任何STL引用的情况下构建库。 – trashkalmar

+0

@trashkalmar:那么你甚至不直接或间接地在整个代码中使用'new'?任何机会r6b正在建设与例外启用和r5b不是? –

+0

当然,我多次使用'new'。我怎样才能弄清楚r6b是否会导致异常?以及如何明确禁用它们?据我所知,Android运行时不支持C++代码中的异常。 – trashkalmar

相关问题