2014-03-19 55 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