找了很久 找不到libiconv原码。用引擎自己的iconv.h libiconv.lib iconv.dll在WIN上可以用。请好心人留个言 告诉一下我怎么才能把这个库也跟着WIN写的项目一起 编译到android项目。
发过4个帖 都没有人回过我。给点希望吧。知道的请说一下。{:soso_e183:}
这个问题不用解决。 因为手机上用不到ICONV库 不管聊天系统还是显示中文什么的 都不需要导入ICONV
— Begin quote from ____
laik228 发表于 2013-1-5 11:32 url
这个问题不用解决。 因为手机上用不到ICONV库 不管聊天系统还是显示中文什么的 都不需要导入ICONV …
— End quote
这个方法不行的话,请教一下中文问题你怎么解决的?
- 本帖最后由 blazeandice 于 2013-1-9 14:08 编辑 *
具体方法如下:
1:下载
到官网下载最新的libiconv库 http://ftp.gnu.org/pub/gnu/libiconv/ (1.14版本测试通过)解压到文件夹libiconv中
2:配置
打开Cygwin Terminal 进入解压文件目录
输入命令:
./configure --build=x86_64-pc-linux-gnu --host=arm-linux-eabi
3:编译
添加三个文件Android.mk,AndroidManifest.xml,jni/Application.mk
具体内容如下:
*]
Android.mk
LOCAL_PATH:= $(call my-dir)
#libiconv.so
include $(CLEAR_VARS)
LOCAL_MODULE := 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)
*]
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.iconv.android"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="9" />
</manifest>
*]
jni/Application.mk
APP_ABI := armeabi
APP_PLATFORM := android-9
APP_MODULES := libiconv
APP_PROJECT_PATH := $(shell pwd)
APP_BUILD_SCRIPT := $(APP_PROJECT_PATH)/Android.mk
在目录下输入命令:
$NDK_PATH/ndk-build
如果成功得到下图输出 842
在目录obj/local/armeabi/ 下可以找到静态库 libiconv.a
4:错误处理
1. 编译时提示:
libiconv-1.14/jni/libcharset/lib/localcharset.c:51:24: error: langinfo.h: No such file or directory
解决方法:
修改目录文件libcharset/config.h的宏定义,禁止该宏定义:
/* Define if you haveand nl_langinfo(CODESET). */
#define HAVE_LANGINFO_CODESET 0
2. 提示错误:
报“c undeclaired”错误
解决方法:
修改文件/libcharset/lib/localcharset.c中函数get_charset_aliases (void)
搜索:int c;
把该变量定义放到该函数的开始处。