CommonCrypto不是为archv7 iOS构建的

ios*_*eak 9 xcode armv7 ios

我最近刚升级到新的XCode.升级后,我的一些应用程序将无法构建.我收到此错误:

ld: cannot link directly with /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/usr/lib/system/libcommonCrypto.dylib.  Link against the umbrella framework 'System.framework' instead. for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)

我已经尝试了一切 - 清洁,重新导入,改变架构......

请帮忙

Hei*_*ati 17

在我尝试了上述两种方法之后,我以不同的方式解决了这个问题.

问题是,当我将在主界面的库(主构建的设置...等),我最初寻找crypto,然后有两只库回来libcorecrypto.dylib并且liblibcommonCrypto.dylib,如果你注意到,无论是在不像一般为灰色,颜色存在您通常添加的黄色库.添加这些会导致编译器报告(缺少一些其他库,例如libz,或者需要更多函数的其他库).

如果您注意到上面两个库通常位于JavaScriptCore.framework库(黄色库)下,因此,通过删除上面的两个并JavaScriptCore.framework改为添加,问题得到解决,并build successful显示

另外要提一下,基于作为内部捆绑存在的灰色库JavaScriptCore.framework,libcrypto和另一个将不存在于/Library/.../system/path上面提到的,即你没有从系统中删除它们,它们就不存在了.

同样,解决方案是:

*从主XCODE项目设置中,不要添加:*dd

libcorecrypto.dylib 
liblibcommonCrypto.dylib
Run Code Online (Sandbox Code Playgroud)

相反,添加:

JavaScriptCore.framework
Run Code Online (Sandbox Code Playgroud)

在你的.m(代码)中,通过执行以下操作来正常获取它们:

#include <CommonCrypto/CommonDigest.h> (or any of your other libs as needed in code)...
Run Code Online (Sandbox Code Playgroud)

它应该工作正常.

我希望这有帮助.

亲切的问候


eGa*_*ges 3

我刚刚解决了这个问题,如下所示:

事实证明,libcommonCrypto.dylib 错误是一个转移注意力的错误。

按照上面的建议删除 libcommonCrypto.dylib 后,我收到了 9 个新错误。乍一看,我以为它们是加密错误,但实际上不是;对我来说,它实际上可以追溯到 zLib 没有被包含,它是在整个实现的更深层部分“导入”的(加密是其中的一部分)。

特别对我来说,它追溯到 ASIDataDecompressor.h,#import < zlib.h>

我通过包含缺少的 libz.dylib 框架来修复它;最终,我不必显式包含 libcommonCrypto.dylib。

因此,请务必在切换 libcommonCrypto 后仔细检查错误,并确保没有丢失其他一些库。