本文转自新浪微博:点击打开链接
1.下载
http://ftp.gnu.org/pub/gnu/libiconv/
这个是官网地址,目前iconv最新版本是1.14,2011.8.7版本的,大小4.8M
官方地址:
http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
LOCAL_PATH:= $(call my-dir)
#libiconv.so
include $(CLEAR_VARS)
LOCAL_MODULE := iconv_static
LOCAL_MODULE_FILENAME := libiconv
LOCAL_CFLAGS := \
LOCAL_SRC_FILES := \
LOCAL_C_INCLUDES += \
include $(BUILD_STATIC_LIBRARY)
LOCAL_C_INCLUDES := $(LOCAL_PATH) \
:
$(LOCAL_PATH)/../../../../../Engine/iconv/include \
$(LOCAL_PATH)/../../../../../Engine/iconv/libcharset \
$(LOCAL_PATH)/../../../../../Engine/iconv/lib \
$(LOCAL_PATH)/../../../../../Engine/iconv/libcharset/include \
$(LOCAL_PATH)/../../../../../Engine/iconv/srclib \
$(LOCAL_PATH)/../../../../../Engine/iconv \
#================================
LOCAL_WHOLE_STATIC_LIBRARIES += cocos2dx_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_static
LOCAL_WHOLE_STATIC_LIBRARIES += box2d_static
LOCAL_WHOLE_STATIC_LIBRARIES += chipmunk_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_extension_static
LOCAL_WHOLE_STATIC_LIBRARIES += iconv_static
LOCAL_CFLAGS := $(MYCOMPILE_FLAG)
include $(BUILD_SHARED_LIBRARY)
$(call import-module,cocos2dx)
$(call import-module,cocos2dx/platform/third_party/android/prebuilt/libcurl)
$(call import-module,CocosDenshion/android)
$(call import-module,extensions)
$(call import-module,external/Box2D)
$(call import-module,external/chipmunk)
$(call import-module,iconv)
1)iconv.h不存在,在ivonv/include/有 iconv.h.in, iconv.h.build.in,就是没看到iconv.h
把iconv.h.in改名成iconv.h,发现编译很多错误
主要错误是类型不匹配,还有很多@符号。
因此需要进行修改。主要改法是不存在的改成存在的,@符号去掉
下面是我自己改完之后的iconv.h文件。编译OK.颜色的是修改的(本来完整的,但是发出来后注释和include好像被新浪给吃没了)
#ifndef _LIBICONV_H
#define _LIBICONV_H
#define _LIBICONV_VERSION 0x010E
extern int _libiconv_version;
#undef iconv_t
#define iconv_t libiconv_t
typedef void* iconv_t;
#include
#include
#ifndef EILSEQ
#define EILSEQ 84
#endif
#ifdef __cplusplus
extern "C" {
#endif
#ifndef LIBICONV_PLUG
#define iconv_open libiconv_open
#endif
extern iconv_t iconv_open (const char* tocode, const char* fromcode);
#ifndef LIBICONV_PLUG
#define iconv libiconv
#endif
extern size_t iconv (iconv_t cd, const char* * inbuf, size_t *inbytesleft, char* * outbuf, size_t *outbytesleft);//iconv.c要相应修改
#ifndef LIBICONV_PLUG
#define iconv_close libiconv_close
#endif
extern int iconv_close (iconv_t cd);
#ifdef __cplusplus
}
#endif
#ifndef LIBICONV_PLUG
#if USE_MBSTATE_T
#if BROKEN_WCHAR_H
#include
#include
#include
#endif
#include
#endif
#ifdef __cplusplus
extern "C" {
#endif
typedef struct {
#if USE_MBSTATE_T
#endif
} iconv_allocation_t;
#define iconv_open_into libiconv_open_into
extern int iconv_open_into (const char* tocode, const char* fromcode,
#define iconvctl libiconvctl
extern int iconvctl (iconv_t cd, int request, void* argument);
typedef void (*iconv_unicode_char_hook) (unsigned int uc, void* data);
typedef void (*iconv_wide_char_hook) (wchar_t wc, void* data);
struct iconv_hooks {
};
typedef void (*iconv_unicode_mb_to_uc_fallback)
typedef void (*iconv_unicode_uc_to_mb_fallback)
#if HAVE_WCHAR_T
typedef void (*iconv_wchar_mb_to_wc_fallback)
typedef void (*iconv_wchar_wc_to_mb_fallback)
#else
typedef void (*iconv_wchar_mb_to_wc_fallback) ();
typedef void (*iconv_wchar_wc_to_mb_fallback) ();
#endif
struct iconv_fallbacks {
};
#define ICONV_TRIVIALP
#define ICONV_GET_TRANSLITERATE
#define ICONV_SET_TRANSLITERATE
#define ICONV_GET_DISCARD_ILSEQ
#define ICONV_SET_DISCARD_ILSEQ
#define ICONV_SET_HOOKS
#define ICONV_SET_FALLBACKS
#define iconvlist libiconvlist
extern void iconvlist (int (*do_one) (unsigned int namescount,
extern const char * iconv_canonicalize (const char * name);
extern void libiconv_set_relocation_prefix (const char *orig_prefix,
#ifdef __cplusplus
}
#endif
#endif
#endif
6. localcharset.c修改
get_charset_aliases()里面
1)(line136 左右)
2)line 165