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

            導航

            統計

            常用鏈接

            留言簿(3)

            隨筆分類

            隨筆檔案

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            中文字幕无码av激情不卡久久| 777米奇久久最新地址| 久久久久这里只有精品 | 久久久噜噜噜www成人网| 久久久久久伊人高潮影院| 日韩久久久久久中文人妻 | 久久无码AV一区二区三区| 精品国产青草久久久久福利| 久久精品国产福利国产秒| 亚洲精品无码久久久| 国产婷婷成人久久Av免费高清| 99热成人精品免费久久| 亚洲国产精品无码久久久不卡| 韩国无遮挡三级久久| 一本一本久久A久久综合精品| 狠狠色丁香久久综合婷婷| 一本久道久久综合狠狠爱| 99热精品久久只有精品| 久久97精品久久久久久久不卡| 久久国产色av免费看| 久久精品亚洲乱码伦伦中文| 91精品国产91久久综合| 人妻少妇久久中文字幕| 中文字幕乱码久久午夜| 亚洲人AV永久一区二区三区久久 | 国产欧美久久久精品| 狠狠综合久久综合88亚洲| 午夜精品久久久久久影视777| 久久精品国产亚洲精品| 精品久久久久久无码中文字幕 | 囯产精品久久久久久久久蜜桃| 久久精品国产一区二区三区不卡| 精品久久久久久| 久久精品人人槡人妻人人玩AV| 国产激情久久久久久熟女老人| 国产精品99久久久久久宅男小说| 久久久久国产成人精品亚洲午夜| 91久久精品视频| 欧美伊香蕉久久综合类网站| 国产精品久久久久久久久免费| 久久99国产精品99久久|