在保留某種巫師的服務後,我已經想出瞭如何讓Thrift與iPhone/iPad一起工作(或者至少讓它編譯好)。
首先,你要抓住這個命令,而不是從維基Objective-C的文件:
svn co http://svn.apache.org/repos/asf/incubator/thrift/trunk/lib/cocoa/src/ thrift-cocoa
然後,通過將新的項目,選擇框架&圖書館和可可做出新的Xcode項目框架。點擊創建並將其保存在好的地方。右鍵單擊目標並選擇添加 - >新建目標。選擇Cocoa Touch,然後選擇靜態庫。給它一個不錯的名字。轉到目標的信息生成選項卡,並將基礎SDK更改爲iPhone設備(我使用3.2,但可以使用任何),並將體系結構更改爲標準(armv6 armv7)或優化(armv7)。在General選項卡下添加Foundation和Cocoa框架。
將從svn存儲庫獲取的所有文件和文件夾拖到項目的Classes文件夾中。選中複製項目框並選中兩個目標旁邊的複選框。分別從靜態庫的Copy Headers和Compile Sources文件夾中刪除TSocketServer.h和.m。現在可以構建靜態庫(和可選的框架)。
打開您想要使用Thrift的項目並轉到您的目標的常規選項卡的信息。將剛剛創建的靜態庫添加到鏈接庫列表。它應該被命名爲libYOUR_TARGET_NAME.a。在構建選項卡下,轉到標題搜索路徑並將路徑添加到剛剛創建的Thrift項目,並檢查遞歸框。
最後,您只需要通過簡單地刪除括號並用引號替換它們來更改Thrift生成的代碼中的導入語句。你現在可以再次建立你的iPhone項目。
我找到了一個名爲Thrift.framework的文件夾,並將其包含在我的目標的鏈接庫中。現在找到進口但連接它們沒有問題。 默認情況下,Thrift.framework項目針對x86_64進行編譯。如果爲模擬器構建它告訴我它必須是i386,我將Thrift概覽更改爲。如果我正在編譯這個設備,它告訴我它必須處於無法編譯Thrift項目的狀態。 無論哪種方式(在64,386中,對於模擬器或設備)我都會得到以下結果: – Aaron 2010-09-01 19:50:20
未定義的符號: 「_OBJC_CLASS _ $ _ TProtocolUtil」,從引用: objc級-REF到TProtocolUtil在gen_1.o 「_OBJC_CLASS _ $ _ TApplicationException」,引用自: 在gen_1 objc級-REF到TProtocolUtil 。 ld:symbol(s)not found collect2:ld返回1退出狀態 – Aaron 2010-09-01 19:51:31