質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

1979閲覧

Macでの動的ライブラリのバージョン取得

J-GUN

総合スコア24

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2018/03/19 13:41

動的ライブラリのバージョンを取得したいのですができません。

[[NSBundle mainBundle] objectForInfoDictionaryKey: @"CFBundleShortVersionString"];
これを使えばバージョンを取得できるとのことでしたので試したのですが、実際には戻り値はnilとなってしまいます。

試したこととしては、下記を確認しています。
Cocoa AppのプロジェクトをXCodeで作ると自動的にinfo.plistが生成されます。
しかし動的ライブラリのプロジェクトを作るとinfo.plistが生成されないため、Cocoa AppからコピーしたりBundleから作ったものを代用したりしています。
そしてCocoa Appの場合は上記のコードでバージョンを取得できましたが、動的ライブラリの場合はできていません。

これはCocoa Appと動的ライブラリの違いが問題なのでしょうか? それとも自動生成されたinfo.plistと別プロジェクトからコピーしたinfo.plistの差なのでしょうか?

原因と解決法がわかりましたら、よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

回答が付かないようなので僕の調べた限りで。

  1. 直接リンクされたdylibのバージョンを調べる関数がある様です

使ったことないです。
Appleのmanページ
ただ、このmanページがLegacyカテゴリに登録されているのですでに存在しないかもしれません。

  1. コマンドラインツールであるotoolを使う。

otool自体は今でも使えますが、manページが一切更新されてないため、manページには使用不可能なオプションも記載されてます。
バージョンだけを表示するオプションはないので、ツールの出力を自力で解析してバージョンを抜き出す必要があります。
調べてませんが、もしかすると新しいオプションが追加されていたりするかもしれません。
GitHubにotoolのソースコードがあります。

投稿2018/03/28 04:13

MasakiHori

総合スコア3384

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

J-GUN

2018/03/28 12:11

正直もう回答は諦めていました。 使えるかどうかはわかりませんが、調べてみます。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問