iOS ユニバーサル フレームワーク テンプレートを使用しています。
フレームワークを作成し、それらをサブプロジェクトとして別のプロジェクトに追加しました。そして、プロジェクトにフレームワーク バイナリを追加しました。
私のフレームワークにはいくつかの定数があります
const float kToolbarHeight = 45;
また、プロジェクトをビルドして iphone シミュレーター (i386) のフレームワークを含めようとすると、リンカー エラーが発生します。
ld: 14 duplicate symbols for architecture i386 clang: error: linker command failed with exit code 1 (use -v to see invocation)
しかし、デバイス用にビルドすると、リンカーエラーはありません。
サブプロジェクト (私のフレームワーク) をプロジェクトから除外し、バイナリのみを保持しようとしましたが、効果はありません。
その問題で説明されているように、ターゲットのアーキテクチャをi386
、および に変更しようとしていますが、効果はありません。$(VALID_ARCHS)
iOS シミュレーターのフレームワークをビルドするにはどうすればよいですか? ターゲットのどの設定を使用すればよいですか?
更新:ヘッダー ファイルで定数を extern として定義すると、問題は解決しました。
// MyView.h
extern const float kToolbarHeight;
// MyView.m
const float kToolbarHeight = 45;
しかし、なぜ?シミュレーターとアームビルドの違いは何ですか?