2

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 はプロジェクトに既に存在し、Build Active Architecture Onlyを No に設定しました。Xcode 4.6.3 でコンパイルされるため、ターゲット メンバーシップの欠落とは関係がないと思います。

これを解決する方法はありますか?または可能な回避策、iOS7 アプリケーションで使用する必要があるため、このライブラリを Xcode5 で動作させることが非常に重要です。

4

1 に答える 1

0

そのため、同様の状況に直面する可能性のある人に役立つように、回答を投稿しています。@deltheli と @sergio のコメントから問題を解決することができました。助けてくれてありがとう。

そのため、サポートされているアーキテクチャを知るためにlipo -infoを実行する 必要があり、armv7s と arm64 がサポートされていないことがわかったので、armv7 でコンパイルしようとしましたが、失敗し、5 ではなく Xcode 4.6 で完全に機能する理由を説明しています。 . 私の libcurl は時代遅れです! 私が使用したバージョンでは、一部のDarwinSSLシンボルがサポートされていませんでした。最近の十分なバージョンを使用すると、問題が修正されました。

于 2013-12-27T05:18:01.090 に答える