Cocos2d-x引入中文支持库并移植到android平台

先说下版本:
Cocos2d-x v3.4
ndk_r10d

在cocos2d-x中直接使用中文会显示乱码,什么从xml文件读取中文,将文件格式保存为utf-8,都不是解决方法,会出现一些其它的问题。Cocos2d-x提供了iconv库,解决中文显示问题。

在win32平台可以直接引入iconv库,这里就不多赘述。
我这里在win32平台是把iconv相关文件直接和源码放在一起的,并加以封装方便使用,这里给出源码下载链接可在win32 平台直接使用的iconv库

android下就不能直接使用cocos2d-x提供的iconv库,需要下载一个已经在linux环境下编译好的iconv库。下载地址:编译好的iconv库

将编译好的源码解压放在 你的项目/cocos2d文件夹下,改名字为iconv。
注:这里需确保下载的库里面包含Android.mk文件,文件内容为

LOCAL_PATH:= $(call my-dir)
#libiconv.so
include $(CLEAR_VARS)
LOCAL_MODULE := iconv_static

LOCAL_MODULE_FILENAME := libiconv
LOCAL_CFLAGS := \
  -Wno-multichar \
  -DAndroid \
  -DLIBDIR="c" \
  -DBUILDING_LIBICONV \
  -DIN_LIBRARY
LOCAL_SRC_FILES := \
  libcharset/lib/localcharset.c \
  lib/iconv.c \
  lib/relocatable.c
LOCAL_C_INCLUDES += \
  $(LOCAL_PATH)/include \
  $(LOCAL_PATH)/libcharset \
  $(LOCAL_PATH)/lib \
  $(LOCAL_PATH)/libcharset/include \
  $(LOCAL_PATH)/srclib
include $(BUILD_STATIC_LIBRARY)

同时,在你的项目的Android.mk文件中,需添加以下内容:
这里的路径根据自己的实际路径设置。

$(LOCAL_PATH)/../../cocos2d/iconv/include \
$(LOCAL_PATH)/../../cocos2d/iconv/libcharset \
$(LOCAL_PATH)/../../cocos2d/iconv/lib \
$(LOCAL_PATH)/../../cocos2d/iconv/libcharset/include \
$(LOCAL_PATH)/../../cocos2d/iconv/srclib \
$(LOCAL_PATH)/../../cocos2d/iconv \

LOCAL_WHOLE_STATIC_LIBRARIES += iconv_static

$(call import-module,iconv)

Ps:
1、如果编译好的库中不包含Android.mk文件,会报错如下:
这里写图片描述
2、如果出现以下问题
这里写图片描述
可参考这个方法:
修改libiconv\libcharset\lib下localcharset.c文件,将int c声明提前。

113 get_charset_aliases (void)
114 {
115 int c;//
116 const char *cp;

157 for (;;)
158 {
159 //int c;
160 char buf1[50+1];

这里给出可能会出现的一些问题的参考解决方案 解决办法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值