遇到的问题:
做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