很少寫這東西,今天寫是為了前半個月糾結的心。
剛換了工作,從以前的c++用戶端跑來寫ios,使用的是c#語言開發。開發平台用到了xcode4.5 monotouch平台。
近兩個多星期一直在玩91SDK對接的問題,從不是如何下手到了今天找到了一些感覺了。
第一,monotouch中只能使用靜態庫,如自己在xcode中產生的一個.a檔案, .dylib檔案。
第二,對接91的時候發現了他們只給我們一個framework的檔案(framework是一個動態庫,還好裡面找到了一個類.a的檔案)
第三封裝framework為一個.a的庫。這樣子我們可以在這個.a庫中寫一個中間類去調用91庫。不這樣子做應該也是可以的,但我沒有試過,因為monotouch是用c#寫的,要綁定的東西太多了,所以建議是寫一個中間類,然後在monotouch中去綁定這個類的開放介面.
好了工作開始:
1.找到91framework檔案中的.a檔案吧。
有標出了哪個是.a檔案了別找錯了。
好的我們現在把這種.a的檔案在framework中全找出來。還有哦裡面的標頭檔也要拿出來全部的放在一個檔案夾裡面。
2.現在建立一個xcode工程
3.加入一些要的庫
4.產生的版本
有真機和虛擬機器上面的
真機
虛擬機器
這時候會產生兩個.a的,他們也是可以合成到一個.a裡面的,具體上baidu
這裡就小打個例子 liop -create "檔案1.a路徑" "檔案2.a路徑" -output "產生路徑.a"
查看版本liop -info "檔案.a路徑"
會看到i386 armv7 armv6
(解出.a檔案可以在終端中使用ar命令,NND說是ar命令其實是tar我研究了半天才發現)
1. tar -x -f 檔案.a
會產生幾個.o的檔案
5.使用這個.a
在monodevelop中建立一個monotouch binding工程
6。引入.a
這個是綁定的代碼,是寫在ApiDefinition.cs,如果有用到enum的綁定或是結構體的綁定定居 structsandenums.cs
7最後建立一個工程用於調用 他們。我這建立的是一個iphone的視圖工程,記的在工程中要在選項中iphone build加入-v -gcc_flags="-lsqlite3 -L${ProjectDir}/lib/libsqlite3.dylib"
這個是串連一下系統的庫。還有把第一張圖中有提示的資源加入到工程中就OK了。
研究了大半個月轉了很多圈子又回到了起點。國內baidu不給力,國外googole常打不開(不過找資料上google沒選錯)我全是在那上面找到的,同時這不是我一個人的研究,還有我的同事和我一起。感謝他們,感謝cctv,最後感謝csdn