2015-10-17 50 views
0

我正在開發一個靜態庫,分發給許多開發人員。現在我面臨着代碼生成的問題。 當我將這個庫包含到xcode項目並嘗試將其歸檔時,連接器產生一個錯誤ENABLE_BITCODE在靜態庫

MyModule.o不包含位代碼。您必須使用啓用位碼(Xcode設置ENABLE_BITCODE)重建它,從供應商處獲得更新的庫或禁用此目標的位碼。對於架構arm64

我嘗試了所有可能的事情(從herehere),沒有任何幫助。在啓用位代碼標誌的情況下,主機項目仍然不可編程。

奇怪的是otool -l命令說所有模塊都包含一個位代碼段。爲什麼xcode項目無法歸檔呢?

回答

0

傳統上我正在回答我自己的問題) 希望這對未來某個人有用。

問題實際上並不在我自己的第三方框架中。我有舊版本的FacebookSDK鏈接到我的主機項目,實際上鍊接器需要重新編譯它(或從供應商請求一個新版本)而不是我自己的庫。

這絕對是奇怪和混淆爲什麼鏈接器報告我的一個庫模塊中的錯誤。 我的圖書館和FacebookSDK之間沒有任何關係。

+0

請注意這一點:我確定您也有Bolts.framework。這已經被新的FBSDK框架內部引用了。然而,解析(如果有的話)將需要一個Bolts.framework,並且需要從Parse中獲得。舊的(FacebookSDK)Bolts可能導致編譯器問題。 – Aggressor

+0

感謝您的建議。我打算停止使用FacebookSDK並使用本地帳戶框架。 – heximal

3

如果確實錯誤是從資料庫中來(而不是從項目中的另一個庫或框架),你可以編譯靜態庫再次在Xcode 7

默認情況下 - 它會添加選項您的編譯設置中的「enable_bitcode」。 確保它被設置爲yes(默認值),並且所有其他源與lib支持位代碼一起編譯(如果不是 - 您將收到錯誤) - 並且您很好。

另一種方法是在使用您的庫的Xcode項目中enable_bitcode = no(通知開發人員)。

+0

我知道我需要重新編譯這個庫,而且我用很多次,包括enable_bitcode = YES來做了很多次。主機項目仍會在其中一個庫模塊中產生關於丟失位代碼段的錯誤 – heximal

+0

可能是使用或依賴於不支持位代碼的外部或第三方庫的模塊之一。嘗試隔離模塊,它必須隱藏在那裏。 – DocForNoc

+0

對不起,我剛剛注意到你在這個評論中給了我一個線索。感謝您花費您的時間,我對您的答案加強 – heximal