7

少しジレンマがあります。プロジェクトに 2 つのフレームワークを追加したので、たまたま両方が JSONKit を使用しています。そのため、プロジェクトをコンパイルすると、これら 2 つのフレームワーク間でシンボルが重複します。

-ObjC -all_load をビルド設定に追加する必要がありました。そうしないと、一部のカテゴリがコンパイルされていないために実行時エラー (クラッシュ) が発生します。

何か案は?

4

1 に答える 1

2

static-library をリンクすると、リンカーはすべてのシンボルを最終的なバイナリに埋め込みます。(これがstaticという名前の理由です。) ソース シンボルと新しく埋め込まれたシンボルとの間に違いがないため、実際には特定のシンボルを削除する良い方法はありません。重複したシンボルを取り除くことはできても、重複したシンボルが同じバージョンであることを確認することはできません。1 つのライブラリが変更されたバージョンのライブラリJSONKitを使用している場合、別のバージョンに置き換えると壊れます。

唯一の方法は.a、シンボルが重複していないファイルを取得するか、ソースを取得して自分でコンパイルすることです。ライブラリの作成者が馬鹿でない場合、シンボルが埋め込まれていないバージョンのライブラリを提供する必要があります。そのようなものがなければ、そのライブラリを使用しないことを強くお勧めします。シンボル競合の心配がないということは、本物の初心者が作ったということで、問題だらけです。

于 2012-10-01T19:13:14.993 に答える