序言
jansson函式庫是一個使用C語言開發的JSON編解譯的工具,理論上應該是可以在不同環境下編譯後就能產生對應的函式庫檔來使用。
不過似乎從別人的發問與官方的回應下並沒有針對iOS給出一個確切的答案回答能不能使用。
經過嘗試之後,發現有另一個函式庫:libpomelo裡面有使用到這個函式庫,而這個函式庫目前也支援Andorid與iOS。
並且在我編譯過libpomelo就會產生jansson的函式庫,所以以下的步驟就是編譯過程與從中取得jansson函式庫檔。
環境
- mac mini+New iPad with iOS 6.1
- Xcode 4.6
- libpomelo 0.3
命令
開啟Terminal,依序輸入以下命令svn checkout https://github.com/NetEase/libpomelo.git/trunk libpomelo
cd libpomelo
svn checkout http://gyp.googlecode.com/svn/trunk/ gyp-read-only
cd gyp-read-only
./setup.py build
cd ..
sudo ./gyp-read-only/gyp --depth=. pomelo.gyp -Dlibrary=static_library -DTO=ios
./build_ios
./build_iossim
命令解釋
- 下載目前最新版的libpomelo
- 進入下載後的目錄
- 因為libpomelo的編譯是透過gyp這個工具,所以下載這個工具
- 進入gyp目錄
- 編譯gyp
- 離開gyp目錄
- 連結libpomelo
- 編譯ios版函式庫
- 編譯ios模擬器版函式庫
設定函式庫
以下要做的動作不是必要的。我這邊依據我所需要的狀況,將函式庫複製到我的Xcode專案目錄並且命名為習慣的檔名。
- 從libpomelo的子目錄[deps/jansson/build/Default-iphoneos]與[deps/jansson/build/Default-iphonesimulator]會找到兩個同名的[libjansson.a]
- 將這兩個檔案複製到自己專案的根目錄,分別命名為[libjansson-device.a]與[libjansson-simulator.a]
- 設定的方式為點選專案的[TARGETS→Build Phases→Link Binary With Libraries],點選下面的[+]
加入剛才複製過來的兩個.a檔[libjansson-device.a]與[libjansson-simulator.a] - 從libpomelo的子目錄[deps/jansson]複製[src]目錄到自己專案的根目錄命名為[jansson]
- 專案的[TARGETS→Build Settings→Search Paths],設定[Header Search Paths],加入"$(SRCROOT)/jansson"
使用範例
這邊只寫個小程式測試編譯後可以執行,詳細CURL用法請參考相關文章#include <jansson.h>
void myLib_test2(){
json_t *jdata;
char cmd_ark_id[] = "id";
char ark_id[] = "value";
jdata = json_pack("{s:s}",
cmd_ark_id,ark_id);
char *j_object;//json
j_object = json_dumps( jdata, 0 );
json_decref( jdata );
printf("%s",j_object);
}
0 意見:
張貼留言