我有一个使用 libcurl.all.a 的项目。它在Xcode 4.6.3上构建,链接和运行完美。但是在Xcode5中,它会在未定义的符号上抛出链接器错误。错误日志如下。
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应用程序中使用。
答案 0 :(得分:0)
所以,我发布答案,以便它可能对任何可能面临类似情况的人有用。我能够从@deltheli和@sergio的评论中解决这个问题,非常感谢他们的帮助。
所以,我不得不跑
lipo -info
了解支持的体系结构,以及
发现armv7s和arm64不受支持,所以我尝试在armv7中编译它,失败并解释了为什么它在Xcode 4.6中完美运行而不是在5中的问题。我的libcurl已经过时了!我使用的版本不支持某些DarwinSSL
符号。使用最新的版本修复了我的问题。