2014-03-28 101 views
0

我正在運行一個使用EAAccessoryManager的應用程序,該應用程序只能通過ExternalAccessory框架使用。然而,它編譯並運行時沒有將ExternalAccessory包含在鏈接的框架列表中。它也不會被任何其他目標加載到Xcode中。這怎麼可能?我很迷惑。如何在沒有框架的情況下使用框架類運行代碼?

我很好奇,因爲我有一個加載靜態庫,還引用EAAccessoryManager另一個項目,並在該情況,應用程序將不能編譯,與錯誤Undefined symbols for architecture i386退出。這是我所期望的。什麼可以解釋差異?

+0

查看靜態鏈接和動態鏈接之間的區別,你會發現你的答案。我敢打賭,一旦它達到試圖使用該功能的部分,就會出現問題。 – borrrden

+0

不,應用程序使用EAAccessoryManager中的類沒有問題,即使ExternalAccessory沒有列在要鏈接的框架中。 – theory

+0

那就是奇怪的行爲。你必須得到比我更瞭解的人的回答。 – borrrden

回答

0

在生成設置,「蘋果LLVM 5.1 - 語言 - 模塊」的部分,「鏈接框架自動」已啓用:

enter image description here

這是一個新的功能,而讀我從來沒有看到發現this post on @import(感謝@RhythmicFistman提示!)。當我將該設置更改爲「否」時,出現我期望的鏈接器錯誤。

0

可能是鏈接器構建設置而不是鏈接構建階段。

+1

糟糕,我打算髮表這個評論。愚蠢的響應web版本。 –

相關問題