すべてのアプリで使用するライブラリがあり、共通のコードが含まれています。Macの場合は「フレームワーク」、iOSの場合は「静的ライブラリ」としてコンパイルします。
ファイナルインクルードプロジェクトで定義された変数をライブラリが参照できるようにしたいと思います。
たとえば、ライブラリには次の関数があります。
void printAppID(void);
void printAppID(void) {
NSLog(@"App ID is: %@", kAppID);
}
当然、この変数が宣言されていない場合、ライブラリは警告をスローするため、次のように宣言しました。
NSString *kAppID;
また、kAppID
事前にライブラリに認識されていないため(プロジェクトごとに異なります)、最終的なプロジェクトは次のようになります。
NSString *kAppID = @"ABCD1234"
これにより、コンパイラエラーがスローされます。
アーキテクチャの未定義のシンボル
を使ってみextern
たり、関数にしたりしてみました#define
が、これを割ることはできません。
ライブラリ内で変数を宣言し、それを別の場所で定義する標準的な方法は何ですか?これはCでもObj-Cでも同じだと思います。
編集:より一般化されたケース
アプリプロジェクトにConstants.hヘッダーファイルと一緒にインクルードされたコンパイル済み静的ライブラリを作成するにはどうすればよいですか?その値はそのプロジェクトで編集してライブラリで使用できますか?