遇到的问题:
做Unity for Android项目时遇到了两个问题,一是用boost序列时,windows下序列化的二进制文件在Android上无法读取,序列化为文本文件则没有问题。二是在C++与C#进行数据传递时wchar_t*类型的字符串只能显示第一个字符。
分析:
问题出在wchar_t上,原因是windows下的wchar_t占2个字节,而linux下则占4个字节,C#读字符串时遇到‘0’时即停止,所以导致后面的字符无法读取。二进制序列化也是同样的问题, windows下序列化为2字节的wchar_t在Android上读取时会出现错位的情况,导致读取失败。
解决方法:
gcc中加入'-fshort-wchar'编译选项,NDK则在application.mk文件中加入'APP_CPPFLAGS += -fshort-wchar'字段。解决问题。
注:这篇博文中提到加入该编译选项会出现第三方库的编译问题,但暂时还没有遇到。
http://blog.sina.com.cn/s/blog_702c2db50101g9y7.html
文章详细介绍了在Unity for Android项目中遇到的wchar_t类型跨平台问题,包括wchar_t在不同操作系统上的字节长度差异,以及在C++与C#间传递wchar_t字符串时出现的只读取第一个字符的问题。提出了解决方案,在gcc编译器中加入'-fshort-wchar'编译选项,并在NDK应用配置文件中设置相应的字段,以确保 wchar_t 类型的一致性和兼容性。

5481

被折叠的 条评论
为什么被折叠?



