1
我有一個項目,它使用libcurl.all.a。它在Xcode 4.6.3上構建,鏈接和運行完美。但在Xcode5中,它會在未定義的符號上引發鏈接器錯誤。錯誤日誌如下。在Xcode5上libcurl鏈接器錯誤,但在Xcode 4.6上工作正常
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已經存在的項目,我已經設置構建有源體系僅爲No.而且由於它在Xcode 4.6.3編譯,我不認爲這有什麼關係失蹤目標成員。
有什麼辦法可以解決這個問題嗎?或者可能的解決方法,這對於使用Xcode5的庫非常重要,因爲它需要在iOS7應用程序中使用。
你會檢查'lipo -info libcurl.all.a'返回什麼?在那裏的i386家族? – sergio
@sergio:是的,它的存在'fat文件中的體系結構:libcurl.all.a是:i386 armv7(cputype(12)cpusubtype(11))'。 Xcode5爲標準架構armv7和armv7s構建,這可能是一個問題嗎? –
您正在使用的libcurl的版本是什麼?你應該注意使用*最近*足夠的版本(即7.28.1+),因爲已經引入了與DarwinSSL相關的重要修復(例如使用僅存在於OS X上的API)。看到這[回答](http://stackoverflow.com/questions/13776322/ios-app-rejected-non-public-api-ssl-related-on-cocos2d-x-and-libcurl/13779449#13779449)更多細節。這可以解釋你的鏈接錯誤(這些協議在DarwinSSL中不存在)。 – deltheil