【学习笔记】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 
版权声明:本文为博主原创文章,转载请附上博文连接!字符串

相关文章
相关标签/搜索