• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            colorful

            zc qq:1337220912

             

            cocos2dx使用了第三方庫照樣移植android平臺-解決iconv庫的移植問題

            http://www.cocoachina.com/bbs/read.php?tid=195310
            當我寫這篇文章的時候我是懷著激動的心情的,因為我又解決了一個技術問題。你可能對題目還一知半解,這是什么意思,我之所以要寫這篇文章就是要解決當我們在cocos2dx中使用了第三方庫的時候,移植到android平臺的過程中是會報錯的問題,典型的例子就是我在上幾篇博客中使用了編碼轉換的庫iconv,在我移植到android平臺測試的時候就出現了錯誤,各種各樣的錯誤,網上搜了一下,但是網上的方法感覺都很老了,有的也沒說明白,今天通過摸索馬上分享給大家,讓大家也少走歪路。


            如 果你還不會移植android平臺,請先看我上一篇的博客,先換個其他的不包含iconv庫的工程,移植成功了再來做今天的事情。今天我們不需要準備任何 工具,需要做的就是理解.mk文件的含義,知道怎么改。我們先來看一下我字體和字符編碼這篇博客GBKToUTF8的頭文件是怎么包含iconv庫的。


            1
            2
            3
            4
            5
            #if(CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)
            #include "iconv\iconv.h"
            #else
            #include "../../../../libiconv/include/iconv.h"
            #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是怎么回事),大家就重新導入工程一遍,問題就解決了,還有什么問題就給我留言吧。
            本帖有小塔原創,轉載請注明出處!

            android 下添加iconv支持

            NDK自帶的iconv的 查看 android-ndk-r9d/sources/android/support/include/iconv.h

            在Android.mk中加入
            LOCAL_WHOLE_STATIC_LIBRARIES += android_support

            $(call import-module,android/support)


            如:

            LOCAL_PATH := $(call my-dir)

            include $(CLEAR_VARS)
            LOCAL_MODULE := mylib
            LOCAL_SRC_FILES := mylib.cpp

            LOCAL_WHOLE_STATIC_LIBRARIES += android_support
            LOCAL_CXXFLAGS += -std=c++11 -fexceptions


            include $(BUILD_SHARED_LIBRARY)
            $(call import-module, android/support)

            posted on 2014-12-13 15:56 多彩人生 閱讀(1318) 評論(0)  編輯 收藏 引用 所屬分類: android cocos2dx

            導航

            統計

            常用鏈接

            留言簿(3)

            隨筆分類

            隨筆檔案

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            中文精品久久久久人妻不卡| 久久久精品人妻无码专区不卡 | 亚洲色婷婷综合久久| 2021国内精品久久久久久影院| 亚洲va中文字幕无码久久不卡| 久久国产亚洲精品无码| 99久久精品无码一区二区毛片| 亚洲国产小视频精品久久久三级| 亚洲精品国产字幕久久不卡 | 伊人久久综合无码成人网| 久久精品国产亚洲av高清漫画 | 久久乐国产综合亚洲精品| 久久久噜噜噜久久熟女AA片| 久久国产精品二国产精品| 久久这里只有精品18| 久久亚洲AV无码西西人体| jizzjizz国产精品久久| 久久人人爽人人爽人人av东京热 | 久久久久九九精品影院| 久久精品国产亚洲AV无码娇色| 久久中文字幕视频、最近更新| 韩国无遮挡三级久久| 精品久久久久久国产| 久久综合一区二区无码| 一本大道加勒比久久综合| 欧洲精品久久久av无码电影| 久久中文字幕人妻丝袜| 性欧美大战久久久久久久| 国内精品久久久久国产盗摄| 97超级碰碰碰久久久久| 精品久久久久久无码专区不卡| 久久久亚洲AV波多野结衣| 日韩精品无码久久一区二区三| 九九热久久免费视频| 91精品日韩人妻无码久久不卡| 72种姿势欧美久久久久大黄蕉 | 合区精品久久久中文字幕一区| 97久久精品人人做人人爽| 久久这里只有精品久久| 91精品国产高清久久久久久国产嫩草| 国产成人久久精品激情|