遇到的問題:html
作Unity for Android項目時遇到了兩個問題,一是用boost序列時,windows下序列化的二進制文件在Android上沒法讀取,序列化爲文本文件則沒有問題。二是在C++與C#進行數據傳遞時wchar_t*類型的字符串只能顯示第一個字符。linux
分析:windows
問題出在wchar_t上,緣由是windows下的wchar_t佔2個字節,而linux下則佔4個字節,C#讀字符串時遇到‘0’時即中止,因此致使後面的字符沒法讀取。二進制序列化也是一樣的問題, windows下序列化爲2字節的wchar_t在Android上讀取時會出現錯位的狀況,致使讀取失敗。app
解決方法:.net
gcc中加入'-fshort-wchar'編譯選項,NDK則在application.mk文件中加入'APP_CPPFLAGS += -fshort-wchar'字段。解決問題。htm
注:這篇博文中提到加入該編譯選項會出現第三方庫的編譯問題,但暫時尚未遇到。blog
http://blog.sina.com.cn/s/blog_702c2db50101g9y7.html
---------------------
做者:fangchenown
來源:CSDN
原文:https://blog.csdn.net/fangchenown/article/details/50378522
版權聲明:本文爲博主原創文章,轉載請附上博文連接!字符串