cocos2d-x移植iconv到Android平台

iconv下载(Android)

源码下载地址,已编译完的iconv包(用这个即可)

ios自带libiconv.dylib,只需#include <iconv.h>即可

步骤

1.libiconv解压文件放置

直接将解压的libiconv文件夹放在cocos2dx游戏引擎cocos2d-2.1rc0-x-2.1.2目录下

libiconv中Andriod.mk文件内容为:

LOCAL_PATH:= $(call my-dir)
#libiconv.so
include $(CLEAR_VARS)
LOCAL_MODULE := libiconv_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)

2.修改自己工程中的Andriod.mk文件

LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static cocosdenshion_static cocos_extension_static libiconv_static

include $(BUILD_SHARED_LIBRARY)

$(call import-module,CocosDenshion/android) $(call import-module,cocos2dx) $(call import-module,extensions) $(call import-module,libiconv)

蓝色为变化的内容

3.iconv.h头文件拷贝

将程序中cocos2dx\platform\third_party\win32目录下的iconv文件夹拷贝到自己工程的Classes目录下

4.程序修改

.h文件

#include "iconv/iconv.h"
 #if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)
#pragma comment(lib,"libiconv.lib")
 #endif

/*---------------------------------------------------*/
// iconv转码
/*---------------------------------------------------*/
static int code_convert( const char *from_charset, const char *to_charset, const char *inbuf, size_t inlen, char *outbuf, size_t outlen );
static std::string u2a( const char *inbuf );
static std::string a2u( const char *inbuf );

.cpp文件

 int CCommonTool::code_convert( const char *from_charset, const char *to_charset, const char *inbuf, size_t inlen, char *outbuf, size_t outlen )
 {
     iconv_t cd;
     const char *temp = inbuf;
     const char **pin = &temp;
     char **pout = &outbuf;
     memset(outbuf,0,outlen);
     cd = iconv_open(to_charset,from_charset);
     if(cd==0) return -1;
     if(iconv(cd,pin,&inlen,pout,&outlen)==-1) return -1;
     iconv_close(cd);
     return 0;
 }

 /*UTF8 To GB2312*/
 string CCommonTool::u2a( const char *inbuf )
 {
     size_t inlen = strlen(inbuf);
     char * outbuf = new char[inlen * 2 + 2];
     string strRet;
     if(code_convert("utf-8", "gb2312", inbuf, inlen, outbuf, inlen * 2 + 2) == 0)
     {
         strRet = outbuf;
     }
     delete [] outbuf;
     return strRet;
 }

 /*GB2312 To UTF8*/
 string CCommonTool::a2u( const char *inbuf )
 {
     size_t inlen = strlen(inbuf);
     char * outbuf = new char[inlen * 2 + 2];
     string strRet;
     if(code_convert("gb2312", "utf-8", inbuf, inlen, outbuf, inlen * 2 + 2) == 0)
     {
         strRet = outbuf;
     }
     delete [] outbuf;
     return strRet;
 }

程序使用

CCString ccStr;ccStr.m_sString = CCommonTool::a2u(ccStr.m_sString.c_str());

希望能给你帮助~

时间: 2024-08-01 11:51:20

cocos2d-x移植iconv到Android平台的相关文章

假防病毒软件从电脑移植到了 Android 平台

以前有位女研究生点击网络钓鱼的链接.随即出现实时扫毒画面的方式,接着呈现了扫毒结果,跑出十余笔病毒数据,记录了被感染的计算机的具体位置,并提示她必须更新防病毒软件,而她在付费两千元后收到"防病毒软件".结果非但没有杀毒,反而让计算机中毒,不仅被骗刷卡消费,还盗取了个人资料. 而过去几年,在计算机上盛行的假的防病毒软件也已经移植到了 Android 平台. 2014 年四月初. Android 恶意及高风险的 App 程序已突破二百万大关 ,离趋势科技之前所预測的三百万大关已不远.其实,

移植memtester到android平台

硬件能进入系统,首要就是测试内存的稳定性,需要一款内存测试工具. 一般都是选择memtester这款linux软件,下载地址如下:http://pyropus.ca/software/memtester/ 把memtester解压到android/external/下(此文默认读者已有Android SDK) ----------------------------------------------------------------------------------------------

Win32游戏到Android平台移植时必须解决的问题集锦

这方面的问题很多,在目前网络上很难找到满足的答案.我在这里将把自己的一个游戏从WIN32到ANDROID移植过程必须面对和要解决的问题,列举出来(有些是已经得到回答的,有些还未解决). 1,如何显示自己的游戏程序图标 这个使用传统的android平台思路实现即可,即修改工程的proj.android\res路径下drawable-hdpi.drawable-ldpi.drawable-mdpi.drawable-xhdpi下的icon.png文件. 注 意:一次试验中我仅修改了drawable-

Win7+VS2010+cocos2d-x 2.1 Beta3+Sqlite工程向android平台移植

Win7+VS2010+cocos2d-x 2.1 Beta3+Sqlite工程向android平台移植 题外话: 有时打开博客想写点什么时,心中感到有点酸楚,尽管语言不那么精简,或者说是准确,而且很可能文中的总结极不成熟,甚至还夹带些错误:但是,它们毕竟是自 己经过"痛苦"的挣扎后取得的一点成绩,于是,还是下决心记下来,一方面充实了自己尘封的笔记,另一方面也不敢独享-因为我看到有那么多的朋友把自己的心 血也无保留地奉献出来.或许,我的这一点一滴也能成为他们决战BUGS中的LITTLE

Cocos2d-x v3.0正式版尝鲜体验【2】 Android平台移植

今天没事又尝试了下3.0正式版关于Android平台的移植,把新建的项目移植了下.过程仅用了十分钟左右,什么概念?! 好吧,事实上我想说,这个版本号真的移植非常轻松啊,只是还没加上其它东西,只是就眼下来说,真的非常方便.心理算是平衡些了,由于写代码总是想着要把CC去掉... 话不多说,来看看怎么移植到Android平台吧.体会下什么叫方便. 首先须要Android的NDK,SDK,Eclipse啥啥的就不提了.这些有过移植经验的就不多说了,关于NDK,最好去官网下载最新的版本号. 假设有自己新建

win8下面配置cocos2d-x的环境以及向android平台移植

大家好,今天学习了一下在win8下面配置cocos2d-x的开发环境,现在分享一下吧,如果有不准确的地方,请大家指出,谢谢! 需要的软件: vs2012 adt Bundle(集成了eclipse和sdk) ant ndk cocos2d-x 的源码 python 首先安装 vs2012 ,安装后安装 python ,安装python后将 python的目录添加进 环境变量中,如: 这样的话,python的环境变量就配置好了,可以在命令行下面执行 python命令 查看是否成功: 安装好后 下载

cocos2dx-3.0(21) 移植android平台 说多了都是泪

----我的生活,我的点点滴滴! ! 网上3.0的教程真心少.能够说没有吧,大多都是2.x 或者 3.0測试版之类的,因为我心大,没有照着2.x去搞,后来搞完后总结了一下,发觉事实上3.0的移植android平台非常easy了,也不须要照着2.x搞,以下记录一下一个"超级苦比的小煞笔"在全然不知道怎么搞的情况下横冲直创去移植android平台遇到的问题 1..首先你的环境要配好 先看以下的图片,图片里是你须要的东西 看图说话 1.1 ADT ADT(Android Developmen

cocos2dx移植android平台

本人这几天一直都没有跟新自己的网站内容,问我干什么去了,当然是做这篇文章做的事了,说起这个移植来真是麻烦啊,网上试验了各种方法,都不知道谁对谁错啊.不过经过本人这三天的研究最后终于成功了,为了让大家少走一些歪路,我决定一定要写下这篇文章,新手们,好好看,不要浪费时间了!现在我就把我遇到的问题和一种简单的方法(方法绝对靠谱,安卓部分适用于3.0)教给大家,还有就是我用到的所有资源.先说资源的问题,大家先去下载我给的资源,一边下载我们一边学教程.关于移植的问题网上的版本大致分为使用Cygwin和不使

基于Cocos2d-x-1.0.1的飞机大战游戏迁移到Cocos2d-x-3.0版本,并移植到Android平台成功运行

一.版本迁移中的问题 1.游戏元素Sprite.Label.Action等等的创建函数名都改为create. 2.函数的回调callfunc_selectorcallfuncN_selectorcallfuncND_selectorcallfuncO_selectormenu_selector改为使用C++11的新特性std::bind和std::function配合使用:CC_CALLBACK_0CC_CALLBACK_1CC_CALLBACK_2CC_CALLBACK_3 MenuItemL