当我写这篇文章的时候我是怀着激动的心情的,因为我又解决了一个技术问题。你可能对题目还一知半解,这是什么意思,我之所以要写这篇文章就是要解决当我们在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 -1
== iconv(iconvH, pin, &strLength, &outbuf, &outLength)

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

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

有了以上的这些操作问题就解决了,这里提醒一下大家,在eclipse中构建工程的时候如果可以编译通过了,但是工程中有错误提示(其实是没有错误的,也不知道这个eclipse是怎么回事),大家就重新导入工程一遍,问题就解决了,还有什么问题就给我留言吧。大家读完我的文章希望留下你们的脚印,至少让我知道有人在看啊。

版权声明:本文由( 小塔 )原创,转载请保留文章出处!

本文链接:http://www.zaojiahua.com/iconv.html

cocos2dx使用了第三方库照样移植android平台-解决iconv库的移植问题的更多相关文章

  1. 关于文章“cocos2dx移植android平台-我的血泪史”需要注意事项

    关于文章"cocos2dx移植android平台-我的血泪史"需要注意事项 在上次转载的这篇文章中,按照配置一步一步的下去.发现工程中在Android.mk中有一处错误.直接bui ...

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

    ----我的生活,我的点点滴滴! ! 网上3.0的教程真心少.能够说没有吧,大多都是2.x 或者 3.0測试版之类的,因为我心大,没有照着2.x去搞,后来搞完后总结了一下,发觉事实上3.0的移植and ...

  3. Cocos2dx-3.0版本 从开发环境搭建(Win32)到项目移植Android平台过程详解

    作为重量级的跨平台开发的游戏引擎,Cocos2d-x在现今的手游开发领域占有重要地位.那么问题来了,作为Cocos2dx的学习者,它的可移植特性我们就需要掌握,要不然总觉得少一门技能.然而这个时候各种 ...

  4. 【winows7+android-ndk-r9+Cygwin 】cocos2dx 2.*游戏移植Android平台完全手册

    为了有不少走的弯路.这里简要记录cocos2d开发环境的搭建.android开发环境搭建.android NDK环境搭建.终于实现cocos2dx 2.* 游戏Android平台移植. 转载请注明出处 ...

  5. cocos2dx移植android平台-我的血泪史

    版权声明:本文由( 小塔 )原创,转载请保留文章出处! 本文链接:http://www.zaojiahua.com/android-platform.html 本人这几天一直都没有跟新自己的网站内容, ...

  6. cocos2dx移植android平台

    本人这几天一直都没有跟新自己的网站内容,问我干什么去了,当然是做这篇文章做的事了,说起这个移植来真是麻烦啊,网上试验了各种方法,都不知道谁对谁错啊.不过经过本人这三天的研究最后终于成功了,为了让大家少 ...

  7. Cocos2dx项目移植Android平台

    链接地址:http://blog.csdn.net/iuncle/article/details/24772183 版权声明:本文为博主原创文章,未经博主允许不得转载. 1.Classes目录下存放. ...

  8. <摘录>cocos2d-x 从环境搭建到win32项目移植android平台

    软件:cocos2d-x-2.2.3:android-ndk-r9d:adt-bundle-windows-x86_64-20131030:python-2.7.6: 1安装配置python 安装没什 ...

  9. glog日志库移植Android平台

    1.在linux平台下使用ndk交叉编译链编译glog生成libglog.a静态库. 2.将生成的库文件与头文件放到Android项目中,使用JNI方法调用. 3.编译遇到错误“stderr.stdo ...

随机推荐

  1. Indoor Positioning System & Real time location system

    背景 惨痛的背景,正如我前面提到的,参加了公司的一个训练营.刚进来公司的新人,内心充满着对未来的美好憧憬,期待自己能闯出属于自己的天地.更何况,作为一名程序员,无比的希望所有人对自己写得代码或者App ...

  2. Android Camera 使用小结

    Android手机关于Camera的使用,一是拍照,二是摄像,由于Android提供了强大的组件功能,为此对于在Android手机系统上进行Camera的开发,我们可以使用两类方法:一是借助Inten ...

  3. jQuery 清除div内容

    $.ajax({            url: "SearchSN.aspx",            data: "SN=" + $("#txtS ...

  4. 【笨嘴拙舌WINDOWS】实践检验之按键精灵【Delphi】

    通过记录键盘和鼠标位置和输入信息,然后模拟发送,就能够创建一个按键精灵! 主要代码如下: library KeyBoardHook; { Important note about DLL memory ...

  5. C#随机颜色和随机字母

    //随机获取颜色 public System.Drawing.Color GetRandomColor() { Random RandomNum_First = new Random(Guid.New ...

  6. 项目中使用的ajax异步读取数据结构设计

    设计稍微复杂了一点,完成ajax读取功能涉及到了很多页面.虽然如此,但感觉比较灵活. 和传统方法唯一的区别在于多了一层数据容器控件,里面提供了显示数据的HTML元素及相应的JS方法. 这样数据控件指生 ...

  7. string tips

    1. .net文档中说,split 比 indexOf 消耗更多的性能.在as3中经过本人测试,这个结论一样成立.而且,字符串越长,split和indexOf的差距就越明显!!所以,能用indexOf ...

  8. mysql 表日常变化前几

    mysql 表日常变化前几use performance_schema create table test.snap1 as SELECT OBJECT_SCHEMA, OBJECT_NAME, CO ...

  9. 剑指offer-第三章高质量的代码(输出该链表中倒数第K个节点)

    题目:输入一个链表,输出这个链表中倒数第K个节点.(代码的鲁棒性) 思路:用两个指针p1和p2,都指向头节点,开始的时候,p2不动,p1移动k-1次,指向第k个节点.此时,如果p1->next! ...

  10. Java中Volatile关键字详解

    一.基本概念 先补充一下概念:Java并发中的可见性与原子性 可见性: 可见性是一种复杂的属性,因为可见性中的错误总是会违背我们的直觉.通常,我们无法确保执行读操作的线程能适时地看到其他线程写入的值, ...