我正在嘗試構建一個使用boost序列化的Android應用程序。我已經使用arm 4.7的g ++構建了針對NDK r8d的庫。然而,當我使用ndk-build編譯我的本地代碼到一個庫中時,當編譯器試圖鏈接boost庫中的一些代碼時,我得到了「未定義的引用''mbtowc''和'未定義的引用''wctomb' 。如何實現android的mbtowc? (或者,理想情況下,如何不?)
對於NDK是否支持這些功能,我似乎無法得到明確的答案。
雖然它實現了這些功能,但根據Boost郵件列表的說法,CrystaX NDK並不是一個可選項,因爲它與Boost一起使用時已知崩潰。
因此,如果NDK確實以某種方式實現了這些功能,爲什麼NDK-build無法與它們鏈接?我可以在NDK中的cstdlib中找到對它們的引用,我相信可能有一個我需要設置的標誌,但我不確定如何或在哪裏這樣做。
如果沒有它們的實現,有沒有人有任何建議我可以自己寫嗎?我大致知道mbtowc及其補充應該做什麼,但是沒有太多編寫低級C的經驗,而且對Android/ARM體系結構沒有太多的瞭解,所以我可以真正使用一些建議。
一個極其垃圾的辦法是打電話回Java。另一個將鏈接到'libiconv'.It可能值得挖掘Android源代碼並查看Java本身使用的庫。從頭開始重新實現代碼頁轉換不是偶然的事情。 – 2013-03-18 16:28:13
您可以簡單地通過NDK標頭grep來檢查功能可用性。我很好奇你對CrystaX NDK和Boost的看法?我們已經使用了很多年了。 – NuSkooler 2013-03-19 20:57:26
你有沒有使用序列化庫?這就是我需要的,這需要默認情況下支持wchar的Android不存在。不幸的是,有太多這樣的變量來明確說明哪些庫可以在不同的平臺上工作,或者使boost的兼容性全有或全無。 看來有將配置提升打造與wchars不支持在目標平臺上的假設預處理器定義。我遇到了其他試圖測試該方法的問題。我會在發佈時發佈我的發現。 – 2013-04-05 20:02:38