2011-09-24 68 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

相關問題