[Xcode]產生iOS可用的jansson函式庫

序言

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


命令解釋

  1. 下載目前最新版的libpomelo
  2. 進入下載後的目錄
  3. 因為libpomelo的編譯是透過gyp這個工具,所以下載這個工具
  4. 進入gyp目錄
  5. 編譯gyp
  6. 離開gyp目錄
  7. 連結libpomelo
  8. 編譯ios版函式庫
  9. 編譯ios模擬器版函式庫

設定函式庫

以下要做的動作不是必要的。
我這邊依據我所需要的狀況,將函式庫複製到我的Xcode專案目錄並且命名為習慣的檔名。


  1. 從libpomelo的子目錄[deps/jansson/build/Default-iphoneos]與[deps/jansson/build/Default-iphonesimulator]會找到兩個同名的[libjansson.a]
  2. 將這兩個檔案複製到自己專案的根目錄,分別命名為[libjansson-device.a]與[libjansson-simulator.a]
  3. 設定的方式為點選專案的[TARGETS→Build Phases→Link Binary With Libraries],點選下面的[+]

    加入剛才複製過來的兩個.a檔[libjansson-device.a]與[libjansson-simulator.a]
  4. 從libpomelo的子目錄[deps/jansson]複製[src]目錄到自己專案的根目錄命名為[jansson]
  5. 專案的[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);
}

參考文章

[Xcode]簡易加入libcurl到Xproject

序言

Curl函式庫常使用在進行Http的操作,這篇文章將使用已編譯完成的libcurl(來源為Nick's software)加入一個Xcode的Project所需的設定。

環境

設定函式庫

  1. 下載ioscurl-7.32.0.tar.gz,解壓縮後可以得到[ioscurl-7.32.0]目錄
  2. 進入[ioscurl-7.32.0/iOScURL]目錄會找到[libcurl-device.a]與[libcurl-simulator.a]兩個檔案與一個[curl]目錄,將這三個東西複製到自己專案的根目錄。

    (同層目錄下也有一個xCode的Project可以做為設定的參考)

    壓縮檔內的檔案


  3. 在專案中加入所需要的函式庫。

    設定的方式為點選專案的[TARGETS→Build Phases→Link Binary With Libraries],點選下面的[+]

    加入iOS原有的[Security.framework]、[libz.dylib]與剛才複製過來的兩個.a檔[libcurl-device.a][libcurl-simulator.a]
    設定後的函式庫
  4. 專案的[TARGETS→Build Settings→Search Paths],設定[Header Search Paths],加入"$(SRCROOT)/curl"

使用範例

這邊只寫個小程式測試編譯後可以執行,詳細CURL用法請參考相關文章

#ifndef xcurl_myLib_h
#define xcurl_myLib_h

#include <curl.h>
int myLib_test1(){
curl_global_init(CURL_GLOBAL_ALL);
CURL *curl;
CURLcode res;
curl=curl_easy_init();
{
curl_easy_setopt(curl, CURLOPT_URL,"http://www.google.com.tw");
res=curl_easy_perform(curl);
curl_easy_cleanup(curl);
}

return (int)res;
}

#endif

相關文章

這裡是關於技術的手札~

也歡迎大家到

倫與貓的足跡



到噗浪來

關心一下我唷!
by 倫
 
Copyright 2009 倫倫3號Beta-Log All rights reserved.
Blogger Templates created by Deluxe Templates
Wordpress Theme by EZwpthemes