• <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 多彩人生 閱讀(1311) 評論(0)  編輯 收藏 引用 所屬分類: android cocos2dx

            導航

            統計

            常用鏈接

            留言簿(3)

            隨筆分類

            隨筆檔案

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            日本强好片久久久久久AAA| 久久人人爽人人爽人人片AV东京热 | 亚洲欧美精品一区久久中文字幕| 亚洲国产精品久久久久婷婷软件| 国产亚州精品女人久久久久久 | 亚洲国产婷婷香蕉久久久久久| 亚洲综合久久久| 99久久精品国产高清一区二区| 久久99国产精品成人欧美| 久久久无码精品亚洲日韩蜜臀浪潮| 久久精品国产99国产精品导航| 狠狠干狠狠久久| 亚洲&#228;v永久无码精品天堂久久| 国产精品久久久久久久久软件 | 国内精品久久久久久久coent| 午夜视频久久久久一区| 国产精品久久久久jk制服| 久久强奷乱码老熟女| 国产成人久久AV免费| 无码精品久久一区二区三区| 国产欧美一区二区久久| 伊人久久精品无码二区麻豆| 久久久久久噜噜精品免费直播| 精品久久久久久亚洲精品| 久久人妻AV中文字幕| AAA级久久久精品无码区| 久久久久亚洲AV无码网站| 久久毛片一区二区| 午夜精品久久影院蜜桃| 久久强奷乱码老熟女| 国产精品日韩深夜福利久久 | 久久精品99无色码中文字幕| 久久久女人与动物群交毛片| 午夜久久久久久禁播电影| 久久久久久国产a免费观看黄色大片 | 久久亚洲美女精品国产精品| 国产亚洲精久久久久久无码77777 国产亚洲精品久久久久秋霞 | 一本一本久久aa综合精品| 久久伊人五月丁香狠狠色| 欧美色综合久久久久久| 亚洲精品99久久久久中文字幕|