cocos2dx 添加 libiconv.lib 解决 字符转换问题

前端之家收集整理的这篇文章主要介绍了cocos2dx 添加 libiconv.lib 解决 字符转换问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

当我写这篇文章的时候我是怀着激动的心情的,因为我又解决了一个技术问题。你可能对题目还一知半解,这是什么意思,我之所以要写这篇文章就是要解决当我们在cocos2dx中使用了第三方库的时候,移植到android平台的过程中是会报错的问题,典型的例子就是我在上几篇博客中使用了编码转换的库iconv,在我移植到android平台测试的时候就出现了错误,各种各样的错误,网上搜了一下,但是网上的方法感觉都很老了,有的也没说明白,今天通过摸索马上分享给大家,让大家也少走歪路。

如果你还不会移植android平台,请先看我上一篇博客,先换个其他的不包含iconv库的工程,移植成功了再来做今天的事情。今天我们不需要准备任何工具,需要做的就是理解.mk文件的含义,知道怎么改。我们先来看一下我字体和字符编码这篇博客GBKToUTF8的头文件是怎么包含iconv库的。

1 #if(CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)
2 #include "iconv\iconv.h"
3 #else
4 #include "../../../../libiconv/include/iconv.h"
5 #endif

如果是win32平台的话就用引擎里边的第三方库,这个iconv库所在的路径是:
E:\cocos2d-x-2.2\cocos2d-x-2.2\cocos2dx\platform\third_party\win32\iconv。但如果是移植到android平台的你需要加上你android平台的库的路径,也就是说你需要先下载好iconv的库,放到一个你的路径,这里我放到的是我引擎的根目录下,所以写的就是上边的代码,大家下去下载这个库,然后按我说的改了代码。然后我们就来看看这个.mk文件改怎么改,我们要修改的是jni目录下的.mk文件,我先截上几张图片,说说里边代码的含义。

上边的这张图片网上有不少的教程都说需要修改,但在我看来根本不是,因为当我在这里加了iconv.h的路径以后编译的时候任然报错,说找不到iconv.h这个文件。所以以后大家也不要改这里,没用的。上边的第一张图片看到了划线的地方了吗?这个是我加上去的,你需要改吗?答案是需要的,但是名字可以和我不一样,那名字改成什么样的呢,这得看另一个文件了,我们等等再说。上面的第二张图片那个划线的地方也是我加上去的,你也需要修改,改成什么也需要看另一个文件。好了现在我们就来说到底看哪个文件这个文件就是你下载的iconv库的根目录下的Android.mk文件,我再来截张图。

这个是文件中的俩句话,你要和上边我说的改的那俩个地方对照起来改。好了其实就是这么简单,Android.mk文件只需要对照的改上俩个地方就可以了,程序中的那个头文件包含也要修改现在我们就来导入到工程中构建一下工程吧。在构建的时候也会出现一个问题,我想这个问题的原因可能是因为iconv库里边实现的函数不一样吧,出现的错误的语句是这句:

-1 == iconv(iconvH,pin,&strLength,&outbuf,&outLength)

我们需要做如下的修改,就是在pin的前边加个强转,因为Android下函数需要传入的参数是char**,而我们程序中的pin是const char **类型的。

Highlighter_348848" class="SyntaxHighlighter " style="width:753.96875px; font-size:14px; color:rgb(51,(char**)pin,sans-serif; font-size:18px">有了以上的这些操作问题就解决,这里提醒一下大家,在eclipse中构建工程的时候如果可以编译通过了,但是工程中有错误提示(其实是没有错误的,也不知道这个eclipse是怎么回事),大家就重新导入工程一遍,问题就解决了,还有什么问题就给我留言吧。大家读完我的文章希望留下你们的脚印,至少让我知道有人在看啊。


转载至:http://www.zaojiahua.com/iconv.html

猜你在找的Cocos2d-x相关文章