2011-11-09 45 views
1

我試圖在我的項目中使用EGOPhotoViewer作爲靜態庫,這樣我就不需要直接在我的項目中包含所有的源代碼。XCode創建和使用鏈接錯誤的靜態庫

我已經forked項目,並創建了一個可可觸摸靜態庫生成libEGOPhoto.a

修改已作出示範項目,以利用靜態庫,而不是源代碼,所以我刪除庫類並將靜態庫添加爲框架。另外一個堆棧答案建議將它作爲一個編譯源添加,但這也不起作用。

,我得到的是相關鏈接以及如下錯誤:

ld: warning: ignoring file /Users/pbrooks/Library/Developer/Xcode/DerivedData/EGOPhotoViewer-chniasxgqzkdbwhjedastrvwlmek/Build/Products/Debug-iphoneos/libEGOPhotoViewer.a, file was built for archive which is not the architecture being linked (i386)

Undefined symbols for architecture i386:
"_OBJC_CLASS_$_EGOPhotoViewController", referenced from: objc-class-ref in RootViewController.o objc-class-ref in DetailViewController.o objc-class-ref in RootViewController_iPhone.o ld: symbol(s) not found for architecture i386

clang: error: linker command failed with exit code 1 (use -v to see invocation)

上得到這個正確的鏈接任何提示?

回答

4

您正在嘗試編譯模擬器(這需要i386架構用於Mac中的英特爾處理器)。您的庫可能是針對用於iOS設備的ARMv6/ARMv7架構進行編譯的。您可能可以直接在設備上運行它。如果你也想在模擬器上運行,你應該根據你是在定位一個iOS設備還是模擬器(或者製作一個包含兩種體系結構的universal lib)來製作不同的庫和鏈接。

+0

我一直希望我在做一個模擬器只有庫,但唉。我還沒有做一個通用庫,但感謝鏈接,我會試一試。 –

+0

感謝這篇文章的指針,它讓我朝着正確的方向前進,而且你的預後是正確的。剛剛開始瞭解圖書館的BAD_ACCESS問題。 –

+0

感謝您的提示。文章的作者說這篇文章已經過時了。新文章在這裏:http://db-in.com/blog/2011/07/universal-framework-iphone-ios-2-0/ –