2010-09-01 64 views
2

我目前被困在試圖讓我的目標C生成的文件在我的iPhone項目中編譯。基本上,它不斷告訴我有用於以下四個進口沒有這樣的目錄:iPhone的節儉框架

節儉/ TProtocol.h 節儉/ TApplicationException.h 節儉/ TProtocolUtil.h 節儉/ TProcessor.h

我遵循Thrift wiki上的所有說明並下載並編譯了XCode中的Thrift框架,但沒有特定於iPhone開發的信息。我幾乎可以肯定這是一個特定於iPhone項目的問題,因爲如果我在XCode中創建一個新的命令行項目,我可以很好地導入這些文件。

+0

我找到了一個名爲Thrift.framework的文件夾,並將其包含在我的目標的鏈接庫中。現在找到進口但連接它們沒有問題。 默認情況下,Thrift.framework項目針對x86_64進行編譯。如果爲模擬器構建它告訴我它必須是i386,我將Thrift概覽更改爲。如果我正在編譯這個設備,它告訴我它必須處於無法編譯Thrift項目的狀態。 無論哪種方式(在64,386中,對於模擬器或設備)我都會得到以下結果: – Aaron 2010-09-01 19:50:20

+0

未定義的符號: 「_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

回答

3

在保留某種巫師的服務後,我已經想出瞭如何讓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項目。

0

嘗試將這些.h文件添加到您的Xcode項目中。

+0

只需從XCode的Thrift.framework項目中提取頭文件並將它們放入我的項目中? 我會試試看,但我不明白爲什麼我要在第一時間構建框架。 – Aaron 2010-09-01 19:12:19