2014-03-19 77 views
0

我一直在Xcode中開發iOS應用程序。它在常規模擬器中編譯和運行完美,但是當我將模擬器設備切換到64位時,失敗了13個新警告和37個新錯誤,所有這些都與我正在使用的外部庫相關聯(我認爲)稱爲ObjectiveDDPhttps://github.com/boundsj/ObjectiveDDP)。人們有類似的問題,但我的理解是,他們應該固定在最近發佈的框架更新中,但在我的最後,這個更新是無濟於事的。我使用的第二個框架是SocketRockethttps://github.com/square/SocketRocket),但我不認爲這是Xcode輸出的罪魁禍首。與64位模擬器的Xcode Mach-O鏈接器錯誤

此外,很明顯,很多人都有這樣的Mach-O錯誤來自與64位不兼容的框架。但是,我覺得這是組織我的文件的問題。話雖如此,我也認爲總體問題是這樣的: Ignoring file /path/to/project/ObjectiveDDP/libcrypto.a, missing required architecture x86_64 in file /path/to/project/ObjectiveDDP/libcrypto.a。有沒有辦法通過添加該體系結構來解決該文件中的這個問題?根據對類似問題的回答,我嘗試將我的構建設置體系結構更改爲Standard architectures(armv7, armv7s, arm64),並重新檢查是否滿足其他依賴關係。

以下是錯誤的一部分:

Undefined symbols for architecture x86_64: 
    "_BN_CTX_free", referenced from: 
     _srp_verifier_new in srp.o 
     _srp_user_start_authentication in srp.o 
     _meteor_user_generate_kgx in srp.o 
     _meteor_user_generate_aux in srp.o 
     _meteor_user_generate_S_string in srp.o 
    "_BN_CTX_new", referenced from: 
     _srp_verifier_new in srp.o 
     _srp_user_start_authentication in srp.o 
     _meteor_user_generate_kgx in srp.o 
     _meteor_user_generate_aux in srp.o 
     _meteor_user_generate_S_string in srp.o 
     _srp_user_process_meteor_challenge in srp.o 
    "_BN_add", referenced from: 
     _srp_verifier_new in srp.o 
     _meteor_user_generate_aux in srp.o 
    "_BN_bin2bn", referenced from: 
     _srp_verifier_new in srp.o 
     _H_nn in srp.o 
     _meteor_user_generate_u in srp.o 
     _meteor_user_generate_x in srp.o 
     _meteor_user_generate_k in srp.o 
     _meteor_user_generate_M_string in srp.o 
     _meteor_user_generate_HAMK in srp.o 
     ... 

和截圖什麼的錯誤看起來像在Xcode:

我的研究後,我還是想知道,如果這是隻是一個模擬器問題,它會在物理iPhone 5S上進行測試時自行解決,並且簡單地說我可以如何擺脫這些錯誤?這裏有沒有什麼建議文件組織問題?另外兩個警告是:

ld: warning: directory not found for option '-L/path/to/place/projectname/projectname/ObjectiveDDP' ld: warning: directory not found for option '-L/path/to/place/projectname/SocketRocket/ObjectiveDDP'

而且這兩條路徑不存在,但我認爲我糾正它被刪除的文件夾,將其移動到回收站,並重新添加。

任何有識之士將不勝感激。

回答

3

它看起來像您的ObjectiveDPP包中包含的libcrypto.a未編譯爲64位拱。如果您需要64位,這個答案看起來像它會幫助你獲得該文件:

Where I can find openssl iOS 7 libcrypto.a and libssl.a static library for arm64 architecture

如果沒有,你可以自己編譯的應用程序不支持64位。

64位只是添加到Xcode 5.1的默認值。您可以在自己的項目中將您的體系結構設置爲$(ARCHS_STANDARD_32_BIT)以將其刪除並返回5.0行爲。

+0

釘住它。我不需要64位支持,所以就像你建議我改變了架構。感謝您作出澄清;我認爲我的困惑是我認爲我需要爲iPhone 5S支持64位。乾杯! – zch