• <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)

            隨筆分類

            隨筆檔案

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            777米奇久久最新地址| 狠狠色丁香久久婷婷综合图片| 无码超乳爆乳中文字幕久久| 久久精品中文无码资源站| 久久久精品人妻一区二区三区四 | 狠狠综合久久综合88亚洲 | 精品久久久久香蕉网| 2021久久精品国产99国产精品| 国产精品禁18久久久夂久| 久久99国产一区二区三区| 婷婷五月深深久久精品| 久久精品国产福利国产秒| 久久精品国产亚洲AV影院| 99久久亚洲综合精品网站| 97久久婷婷五月综合色d啪蜜芽| 国产精品久久99| 久久婷婷成人综合色综合| 亚洲国产成人精品久久久国产成人一区二区三区综 | 亚洲AV日韩精品久久久久| 国内精品久久久久久麻豆| 99久久国产综合精品女同图片| 国产精品成人99久久久久| 久久久久成人精品无码中文字幕 | 久久亚洲精品国产精品婷婷| 99久久国语露脸精品国产| 久久久久se色偷偷亚洲精品av | 午夜精品久久影院蜜桃| 国产亚洲美女精品久久久 | 亚洲Av无码国产情品久久| 国产一区二区精品久久岳| 99久久精品国内| 99久久人妻无码精品系列| 久久精品国产免费观看三人同眠| 久久久99精品成人片中文字幕| 99久久99这里只有免费的精品| 久久66热人妻偷产精品9| 三上悠亚久久精品| 韩国三级大全久久网站| 国产69精品久久久久777| 国产精品久久久久久久久免费| 国产精品久久影院|