【學習筆記】linux與windows中wchar_t的問題

遇到的問題: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 
版權聲明:本文爲博主原創文章,轉載請附上博文連接!字符串

相關文章
相關標籤/搜索