2011-05-25 76 views
2

我已經爲iOS構建了一個靜態庫。我的問題是我在我的庫中使用ASIHTTPRequest作爲示例,當我將庫添加到已使用ASIHTTPRequest庫的應用程序時,出現編譯器錯誤,直到我從使用我的庫的項目中刪除所有ASIHTTPRequest .m文件。爲iOS構建一個靜態庫

有沒有辦法解決這個問題?例如,構建靜態庫並使其需要ASIHTTP庫而不是將它們添加到項目中?

編輯:

以下是錯誤的一個例子,我得到一次我「檔案」項目。

ld: duplicate symbol _main in /Users/tj/Library/Developer/Xcode/DerivedData/db-afhqjyfitjcnbqdmywezdvmryvyp/ArchiveIntermediates/db/IntermediateBuildFilesPath/db.build/Release-iphoneos/db.build/Objects-normal/armv6/fmdb.o and /Users/tj/Library/Developer/Xcode/DerivedData/db-afhqjyfitjcnbqdmywezdvmryvyp/ArchiveIntermediates/db/IntermediateBuildFilesPath/db.build/Release-iphoneos/db.build/Objects-normal/armv6/main.o for architecture armv6 
collect2: ld returned 1 exit status 
Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/llvm-gcc-4.2 failed with exit code 1 

特勞斯蒂

+0

什麼是編譯器錯誤,大多數人的錯誤與此獲得與您複製文件的可達性做。 – 2011-05-25 18:39:06

+0

我不記得了,但它與所有已經包含的.m文件有關 – 2011-05-25 18:44:15

+0

我現在無法檢查,因爲我正在對圖書館進行重大改寫 – 2011-05-25 18:46:06

回答

0

我的建議是讓ASIHTTPRequest到它自己的靜態庫,可以將其作爲您的靜態庫的項目依賴項目。基本上你要做的是創建一個xcode項目,將ASIHTTPRequest打包進去,關閉該項目,然後拖動ASIHTTPRequest項目文件到靜態庫項目的文件導航器中。這會將其添加爲依賴項目並自動將其構建爲靜態庫並將其與您的項目相關聯。

在一個應用程序項目中使用靜態庫時,請執行相同的操作。將靜態庫作爲依賴項目進行管理比較容易,而依賴項目又將ASIHTTPRequest作爲另一個依賴級別。通過這種方式,您的兩個項目都能夠看到它的標題,並與其鏈接,並且不會有重複的符號問題。

如果你想發佈您的靜態庫給其他開發者則是一個更加困難的境地......