.-- --

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
スポンサー広告 comment(-) trackback(-)
.05 2010

ライブラリの導入

Tasakiです。

AppStoreの審査基準変更で混乱が生じているようですね。このところ、こういったケースが増えてきているので、開発者としては不安が募ってくるばかりです。昨日までOKだったものが次の日にはNG扱いになっちゃうわけですからね。アプリが完成したタイミングで、これやられたらと考えると…ゾッとします。

まあ、ネガティブな感じで始まってしまいましたが、今回は外部ライブラリのインポートについて、手順を追いながら、注意点を挙げてみたいと思います。iPhone向けのオープンソースライブラリも増えてきてますし、利用する機会も多くなってきてますので。

1.ライブラリのバンドル
外部ライブラリ(.aファイル)をプロジェクトにインポートします。
通常のファイル追加操作も利用できますが、実機用とシミュレータ用でリンクするライブラリを動的に変更する場合は、以下のようにします。

a.リンカフラグの設定
図に示す、ターゲットのビルド構成情報の「他のリンカフラグ」に -l<ライブラリ名>の記述を追加します。
リンク
例えば、ライブラリファイルの名称が、libTest.aである場合には、-lTest と記述します。
通常は、-ObjCもしくは、-all_loadも記述しておきましょう。

b.ライブラリ検索パスの追加
同リスト内にある「ライブラリ検索パス」にライブラリファイルが格納されたパスを追加します。
検索パス
例えば、実機用のライブラリファイルが
<プロジェクトフォルダ>/Libraries/lib/iphoneos、
シミュレータ用が
<プロジェクトフォルダ>/Libraries/lib/iphonesimulator以下に配置されている場合は、
$(SRCROOT)/Libraries/lib/$(PLATFORM_NAME)とします。
こうすると、実機用とシミュレータ用で別々のライブラリであっても、ビルド構成をDeviceにすると、実機用のライブラリが、SImulatorにすると、シミュレータ用のライブラリが自動的にリンクされるようになります。とても便利です。

2.ヘッダファイルの追加
ライブラリ用のヘッダファイルをインポートします。
これも、通常のファイル追加操作を利用してもいいですし、以下のように、ターゲットのビルド構成情報の「ヘッダ検索パス」にヘッダファイルの格納されたパスを登録してもOKです。
検索パス
例えば、ヘッダファイルが、
<プロジェクトフォルダ>/Libraries/include以下に保存されている場合には、
$(SRCROOT)/Libraries/include/を追加します。
すると$(SRCROOT)が現在のプロジェクトフォルダのパスに置換されます。
内部でさらにフォルダが切られている場合は、再帰的にチェックしておけばOKです。

あとは、ビルドして確かめるのみです。
エラーが発生した場合の対策ですが、
・ヘッダファイルの配置漏れがないか確認する
・ライブラリ検索パス、ヘッダ検索パスが正しいか、よく確かめる
・リンカフラグを確かめる
これを徹底すれば、ライブラリのリンクに関する問題は、ほとんど解決できます。

ただ、自作ライブラリ等でライブラリ自体に欠損(ヘッダファイルの追加漏れ等)がある場合も考慮しなければなりません。
ライブラリのビルドに成功していても、アプリケーションプロジェクトにリンクしてみて初めて分かる問題なので、要注意です。

僕の経験上、ライブラリを利用する際に何度も体験するハメになる問題です。一度ハマると、ポインタの不正参照と同レベルくらいに厄介です。これが助けになれば幸いなんですが。

関連記事
スポンサーサイト

Comment

Post comment

  • comment
  • secret
  • 管理者にだけ表示を許可する

Trackback

trackbackURL:http://appteam.blog114.fc2.com/tb.php/96-b69b6309

ブログ内検索

関連リンク

製品情報

最新記事

カテゴリ

プロフィール

neoxneo



NEXT-SYSTEM iOS Developers Blog


  • UTO:
    カナダ版iPhone4Sは、マナーモードでシャッター音がならない…


  • Ehara:
    ...


  • Hayate:
    ...


  • Tasaki:
    Developer登録完了...したのはいいけど


  • Ueda:
    ...



リンク

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。