49

SocketRocket を使用して (CocoaPods 経由でインストールされた) 依存関係を持つプロジェクトがあり、HeapAnalytics から静的ライブラリをインポートしました。HeapAnalytics ライブラリはすでに SocketRocket を使用しているようです。コンパイル時にエラーは発生しませんが、実行時に次のメッセージが表示されます。

Class SRWebSocket is implemented in both [path] and [path].
One of the two will be used. Which one is undefined.

私が見たほとんどのソリューションでは、静的ライブラリを自分でコンパイルしてクラス名などを変更する必要があり、ソースにアクセスできないため、処理方法がわかりません。

推奨事項はありますか?

4

4 に答える 4

61

そのエラー メッセージは私が書きました! •</p>

クラス名を変更するか、上記のライブラリに対してリンクしないでください。

プロジェクトはどのように構成されていますか? SR に対して明示的にリンクしている場所はありますか? それとも、すでに SR が含まれている 2 つの静的ライブラリをリンクした結果ですか?

前者の場合は、SR への直接のリンクを停止し、既にそれを使用しているライブラリに付属のバージョンを継承するだけです (警告: 正しいバージョンであることを確認してください)。

後者の場合、ライブラリの 1 つを変更する必要があります。

• 実は、エラーを修正しました。どちらか一方が使用されることを暗示していました。しかし、それは実際に起こっていることではなく、異なるプラットフォーム間で動作が異なっていました. したがって、動作が未定義であることをより正確に特定できるように変更されました。

于 2015-06-01T20:16:16.933 に答える
4

私の場合、メインのアプリ ターゲットとテスト ターゲットの両方にソース ファイルを不必要に追加したときに、このエラーが発生しました。

両方のターゲットが選択されたターゲット メンバーシップ

テストターゲットを削除するとTarget Membership解決しました:

ターゲットが 1 つだけ選択されたターゲット メンバーシップ

于 2018-03-02T10:41:12.417 に答える