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.soinclude $(CLEAR_VARS)LOCAL_MODULE := libiconv_staticLOCAL_MODULE_FILENAME := libiconvLOCAL_CFLAGS := \ -Wno-multichar \ -DAndroid \ -DLIBDIR= \ -DBUILDING_LIBICONV \ -DIN_LIBRARYLOCAL_SRC_FILES := \ libcharset/lib/localcharset.c \ lib/iconv.c \ lib/relocatable.cLOCAL_C_INCLUDES += \ $(LOCAL_PATH)/include \ $(LOCAL_PATH)/libcharset \ $(LOCAL_PATH)/lib \ $(LOCAL_PATH)/libcharset/include \ $(LOCAL_PATH)/srclibinclude $(BUILD_STATIC_LIBRARY)

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

LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static cocosdenshion_static cocos_extension_static libiconv_staticinclude $(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 (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) #pragma comment(lib,"libiconv.lib") code_convert( *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文件

*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; } CCommonTool::u2a( const char *inbuf ) {size_t inlen = strlen(inbuf);char * outbuf = new char[inlen * 2 + 2];string strRet;, , inbuf, inlen, outbuf, inlen * 2 + 2) == 0){strRet = outbuf;}delete [] outbuf;return strRet; } CCommonTool::a2u( const char *inbuf ) {size_t inlen = strlen(inbuf);char * outbuf = new char[inlen * 2 + 2];string strRet;, , 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());

希望能给你帮助~

哪里有意志存在,哪里就会有出路。

x移植iconv到Android平台

相关文章:

你感兴趣的文章:

标签云: