2017-10-09 36 views
0

我必須編譯一個庫(來自Bellard.org的庫BPG)來創建一個.so或一個我可以在android/iOS上使用的dll。爲android/iOS編譯C++

我正在使用Visual Studio。經過一番研究,我找到了項目「Visual C++ - >跨平臺 - >共享庫(Android,iOS)」。但我完全迷失了,無法做任何事情。

下載的庫是用一些文件夾組織的,但Visual不允許生成樹,所有文件都按過濾器排序(一個用於標題,另一個用於源)。所以我不能建,我有超過300級的錯誤,「無法打開源文件」,「未定義的變量」 ......

其次,從項目的README文件說:

的以下包需要安裝:mingw64-gcc的mingw64-libpng的mingw64-libjpeg的渦輪增壓mingw64-SDL mingw64-SDL_image YASM

我發現安裝了MinGW的32位,但沒有64位,所以我不知道是否編譯可以執行。我不知道如何找到這些庫。

所以我的問題是,爲Android/iOS編譯C/C++庫的最佳方法是什麼?我在哪裏可以找到適合初學者的教程?

謝謝

回答

0

我曾擔任過多年的交叉編譯工程師。我認爲最適合你的IDE是帶有CMake的CLion。

CMake是一個可以將C/C++庫交叉編譯到ios \ android \ linux \ etc中的工具,只使用一個配置文件:「CMakeList.txt」。 CMake的主要任務是將CMakeList.txt翻譯成每個平臺上的Makefile併爲您提供.a和.so文件。

CLion是非常強大的代碼編輯和調試IDE。

此外,Android需要JNI(或JNA,如果不考慮性能)將您的C++接口包裝爲java類。在這裏我會推薦SWIG。 SWIG是一種將C++接口包裝爲其他語言的工具,這意味着,不僅可以支持Android上的java,而且其他日子,您的lib還可以支持python \ tcl \ Go \ etc。

+0

我會檢查。這是我第一次交叉編譯,我將搜索關於使用CLion/CMake的教程並嘗試編譯我的庫。希望它能工作,我試圖做幾天,但我還沒有進步。 –

+0

我通過一天試圖編譯[庫](https://bellard.org/bpg/),但我失敗了。我仍然有像''未經聲明'轉換'的錯誤。我安裝了所有的軟件包,但我不知道爲什麼我無法編譯。 –

+0

我強烈建議讓linux成爲你的開發操作系統。即使可以用mingw來使用windows。這些年來我在所有的操作系​​統之間苦苦掙扎,windows \ ubuntu \ macos,util我發現linux centos 7。適用於交叉編譯器^ _^ –

0

你用哪個操作系統來構建庫? macOS還是贏?

對於iOS:某文件 對於Android的:.so文件

首先,你應該檢查的README文件

  • 編輯Makefile來改變編譯選項(默認 編譯選項應該可以)。輸入'make'編譯'make install'安裝編譯的二進制文件。

  • 使用'make -j N'其中N是要編譯的CPU核心數量更快。

  • 必須安裝以下軟件包:SDL-devel SDL_image-devel yasm。建議使用yasm版本> = 1.3.0 以獲得更快的編譯。支持

  • 只有64位的目標,因爲X265需要它有點 深度> 8.

檢查這個安裝包SDL https://wiki.libsdl.org/Installation

+0

我正在使用Windows。我已經有了SDL包,但是我沒有找到一種方法來獲取mingw64包(例如mingw64-libpng) –

+0

試試這個https://mingw-w64.org/doku.php –