質問: 動的ライブラリのバージョンを取得したいのですができません。 [[NSBundle mainBundle] objectForInfoDictionaryKey: @"CFBundleShortVersionString"]; これを使えばバージョンを取得できるとのことでしたので試したのですが、実際には戻り値はnilとなってしまいます。 試したこととしては、下記を確認しています。 Cocoa AppのプロジェクトをXCodeで作ると自動的にinfo.plistが生成されます。 しかし動的ライブラリのプロジェクトを作るとinfo.plistが生成されないため、Cocoa AppからコピーしたりBundleから作ったものを代用したりしています。 そしてCocoa Appの場合は上記のコードでバージョンを取得できましたが、動的ライブラリの場合はできていません。 これはCocoa Appと動的ライブラリの違いが問題なのでしょうか? それとも自動生成されたinfo.plistと別プロジェクトからコピーしたinfo.plistの差なのでしょうか? 原因と解決法がわかりましたら、よろしくお願いいたします。
回答: 回答が付かないようなので僕の調べた限りで。 1. 直接リンクされたdylibのバージョンを調べる関数がある様です 使ったことないです。 Appleのmanページ ただ、このmanページがLegacyカテゴリに登録されているのですでに存在しないかもしれません。 2. コマンドラインツールであるotoolを使う。 otool自体は今でも使えますが、manページが一切更新されてないため、manページには使用不可能なオプションも記載されてます。 バージョンだけを表示するオプションはないので、ツールの出力を自力で解析してバージョンを抜き出す必要があります。 調べてませんが、もしかすると新しいオプションが追加されていたりするかもしれません。 GitHubにotoolのソースコードがあります。