我使用的是最新的Android NDK R6B建立我的共享對象。此庫不使用任何類型的STL的所有,但生成的.so包括許多STL類的東西的std :: bad_alloc_what(無效)等等,這大大增加了二進制的大小。發佈版本也包含這個垃圾。 APP_STL在任何地方都沒有定義,NDK r5b也只生成使用函數的小二進制。它是r6b的bug嗎?我如何用r6b構建沒有STL的東西?如何在沒有STL的情況下構建Android NDK .so?
回答
似乎存在NDK R6B一個錯誤,它總是建立圖書館與異常的支持,即使沒有明確指定-fno-exceptions
。
詳見這個問題:Android NDK produce unreasonable big binaries, how to optimize .so size?
我想你是對的。看來,我應該繼續使用'舊'r5 NDK。 Спасибо。 – trashkalmar
如果您正在使用,也就是說,new
那麼你就含蓄地使用了std::bad_alloc
例外的標準庫。除非你調用new
無擲版本,這將改用std::nothrow
。如果你不使用標準庫,那麼它將不會被鏈接。只要確保你沒有,如果這就是你想要的,或者只是移動到C?
我我確定我不在任何地方使用STL,因爲正如我所說的,r5b在沒有任何STL引用的情況下構建庫。 – trashkalmar
@trashkalmar:那麼你甚至不直接或間接地在整個代碼中使用'new'?任何機會r6b正在建設與例外啓用和r5b不是? –
當然,我多次使用'new'。我怎樣才能弄清楚r6b是否會導致異常?以及如何明確禁用它們?據我所知,Android運行時不支持C++代碼中的異常。 – trashkalmar
- 1. ndk構建和.so文件創建android
- 2. 默認情況下,Android NDK工具鏈二進制文件是否構建有或沒有例外情況?
- 3. 在沒有Flash Builder的情況下構建Android本機擴展
- 4. 在不創建項目的情況下構建NDK源碼
- 5. 如何在沒有sudo的情況下構建庫?
- 6. 如何在沒有CMake的情況下構建yaml-cpp
- 7. 如何在沒有構建文件的情況下執行Ant
- 8. 如何在沒有醜化的情況下構建Yeoman骨幹?
- 9. 如何在沒有構建的情況下運行Angular 2(cli)?
- 10. 如何在沒有內部模塊的情況下構建node.js?
- 11. 如何在沒有OpenSSL的情況下構建Python?
- 12. 如何在沒有STL的情況下在C++中創建邊(v1,v2)列表
- 13. 如何在沒有setContent的情況下創建Android選項卡
- 14. 如何在沒有手機應用程序的情況下構建Android?
- 15. Android:是否可以在沒有SurfaceView的情況下創建SurfaceTexture?
- 16. 如何在不構建所有Android的情況下構建AOSP應用程序?
- 17. 在Android的NDK如何在一個構建運行創建多個庫(的.so)
- 18. Android NDK構建.so,但所有包含未解決的包含
- 19. Xamarin:使用NDK構建的.so
- 20. 如何在沒有所有JDBC驅動程序的情況下構建Flyway
- 21. 在沒有註冊的情況下構建VB6項目
- 22. 在沒有Eclipse的情況下構建一個Eclipse Eclipse項目
- 23. 我可以在沒有設備的情況下進行構建
- 24. 在沒有Visual Studio的情況下構建RIA服務項目
- 25. 在沒有Web服務器的情況下構建Web服務
- 26. 如何在沒有層次結構的情況下遵循xpath?
- 27. 如何在沒有結構的情況下部署Django項目
- 28. 如何在沒有android SDK的情況下創建Android小部件?
- 29. 如何在沒有Java的情況下在Android中播放聲音或音樂?
- 30. 我可以在沒有NDK的情況下爲Android開發OpenCV嗎?
這不是一個錯誤,但我們不得不接受這樣的事實:http://code.google.com/p/android/issues/detail?id=19881 –