文章

顯示從 6月, 2016 起發佈的文章

[筆記] Android NDK 開發的初體驗

圖片
        Android SDK 開發程式都以 JAVA 語法為主,不過有些以 C/C++ 語言編寫的程式碼想要用 JAVA 來重寫,恐怕花的時間將很長。由於 Android 平台是從 C/C++ 所開發而成,因此 Android 提供一套 NDK (Native Development Kit) 讓原本 C/C++ 開發人員也能將 C++ 語言移植到 Android 環境裡。之前我們在 Linux 環境下編譯成功的 C++ 檔案,打算移植到 Android 平台上,初次使用 NDK 編譯遇上不少問題,過程中我們將這些問題記下來並找到解決辦法,希望對後進者提供幫助,縮短開發時間。 <遇上 NDK 編譯的問題> 問題一: NDK compiler 對於資料強制型態較嚴格,底下有兩個案例          void *TimerManThread( void *arg )          {               printf("TimerManThread=%x\n", (unsigned int)arg);   /* 錯誤訊息 error: cast from 'void*' to 'unsigned int' loses precision [-fpermissive] */               printf("TimerManThread=%x\n", (unsigned int*) arg);   /* 解決辦法 */            }          void AChkPtr_(void *ptr)          {                unsigned ptrx = (unsigned) ptr;  /* 錯誤訊息 */                 unsigned *ptrx = (unsigned *) ptr;   /* 解決辦法 */            } 問題二: 與資料轉換或數字檢查相關,NDK 編譯所產生的錯誤訊息,如下。        error: 'toupper' was not declared in t