我有一个项目使用 libcurl.all.a .它在 Xcode 4.6.3 上构建、链接和运行完美。但在 Xcode5 中,它会在 undefined symbol 上引发链接器错误。错误日志如下。
Undefined symbols for architecture i386:
"_SSLCopyPeerCertificates", referenced from:
_darwinssl_connect_common in libcurl.all.a(libcurl_la-curl_darwinssl.o)
"_SSLDisposeContext", referenced from:
_Curl_darwinssl_close in libcurl.all.a(libcurl_la-curl_darwinssl.o)
_Curl_darwinssl_shutdown in libcurl.all.a(libcurl_la-curl_darwinssl.o)
_darwinssl_connect_common in libcurl.all.a(libcurl_la-curl_darwinssl.o)
"_SSLNewContext", referenced from:
_darwinssl_connect_common in libcurl.all.a(libcurl_la-curl_darwinssl.o)
"_SSLSetEnableCertVerify", referenced from:
_darwinssl_connect_common in libcurl.all.a(libcurl_la-curl_darwinssl.o)
"_SSLSetProtocolVersionEnabled", referenced from:
_darwinssl_connect_common in libcurl.all.a(libcurl_la-curl_darwinssl.o)
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
项目中已经存在 SecurityFramework,我设置了 仅构建事件架构 没有。而且由于它在 Xcode 4.6.3 中编译,我认为它与缺少目标成员资格没有任何关系。
有没有办法解决这个问题?或者一个可能的解决方法,让这个库与 Xcode5 一起工作非常重要,因为它需要在 iOS7 应用程序中使用。
最佳答案
因此,我发布答案,以便它对可能面临类似情况的任何人有用。我能够从@deltheli 和@sergio 的评论中解决问题,非常感谢他们的帮助。
所以,我不得不跑
lipo -信息
了解支持的架构,以及
发现不支持 armv7s 和 arm64,所以我尝试在 armv7 中编译它,但失败并解释了为什么它在 Xcode 4.6 而不是 5 中完美运行的问题。我的 libcurl 已经过时了!而且我使用的版本不支持DarwinSSL
符号。使用足够新的版本为我解决了这个问题。
关于ios - Xcode5 上的 libcurl 链接器错误,但在 Xcode 4.6 上工作正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19294737/