5

現在、私のプロジェクトには、静的ライブラリとしてコンパイルされた ShareKit があります。適切に実施されています。また、フレームワークをプロジェクトに追加するだけで、Amazon の AWS SDK を実装しました。

重複したシンボルは、Amazon の AWS SDK ファイル「AWSIOSSDK」から来ているようです。これは次のようになります。

ここに画像の説明を入力

そしてそのファイルは、ShareKit のファイル libShareKit.a と衝突しています。そのファイルは次のようになります。

ここに画像の説明を入力

とにかく、これらのファイルは両方とも、私がこれまでに見たことのないものです。そして、いくつかの JSON ファイルがそれらの中で衝突しているようです。

私は他のSOの質問を見てきましたが、コンパイルされたソースでいくつかのことを行うように言われていますが、これらのファイルはどちらのライブラリからのコンパイルされたソースにもありません。

Xcodeが与える正確なエラーは次のとおりです。

ld: duplicate symbol _OBJC_CLASS_$_SBJsonParser

とにかく、私が何をすべきか考えている人はいますか?この問題を修正しない限り、アプリはコンパイルされません。

ありがとう!

4

3 に答える 3

5

ライブラリ アーカイブをオブジェクト ファイルに分割し、重複を除外して再度マージすることもできます。

そのタスクを管理するためのアイデアを得るには、次のウォークスルーを参照してください: 静的​​ライブラリからクラスを削除することにより、リンク中の重複シンボル エラーを回避する

于 2012-07-22T20:42:33.190 に答える
4

これらは両方ともSBJsonParser静的ライブラリに組み込まれています。これは、静的ライブラリを構築する正しい方法ではありません。それぞれがなしでビルドする必要がSBJsonあり、次にそれらすべてを でリンクする必要がありますSBJson。いくつかの解決策があります。

  • これらのライブラリを再構築 (またはそのメンテナーに依頼) して、サードパーティのライブラリを静的ライブラリに直接含めないようにします。これが理想的なソリューションです。
  • を使用SBJsonして、ファイルから不適切なファイルを削除します。のオブジェクトを一覧表示し、そこにあるべきではないオブジェクトを削除することで、これを実行できるはずです。もちろん、すべてのファイルを抽出して直接リンクすることもできます。.aarar -t.aar -dar -x.o
于 2012-07-22T20:40:22.990 に答える
0

FaceBookConnect フレームワーク (プロジェクト B と呼びましょう) と私のプロジェクト (プロジェクト A) で同じ問題が発生しました。どちらもJSONフレームワークを再度リンクしていました。

解決策は次のとおりです。

  1. Project B > Target > Build Phase > Remove JSON from "Link Binary with libraries" に移動します
  2. プロジェクト B がビルドできるように、JSON フレームワークがまだプロジェクト内にあることを確認してください (削除しないでください)。
  3. プロジェクト B をビルドすると、エラーは発生しません。プロジェクトは、JSON フレームワーク シンボルをビルドする必要がありますが、埋め込まないでください。
  4. プロジェクト B の製品 (フレームワーク) と JSON フレームワークの両方をプロジェクト A に追加します。
  5. プロジェクト A > ターゲット > ビルド フェーズに移動し、プロジェクト B と JSON の両方が「ライブラリとバイナリをリンクする」セクションに追加されていることを確認します。
  6. プロジェクト A をビルドします。

よろしく、

于 2014-11-04T09:49:51.933 に答える