8

一般的な原則として、iPhone アプリの 1 つに使用してきましたがagvtool、最近、バージョン変数を確認できるようにしたい理由を見つけました (ヘルプ コンテンツがドキュメント ディレクトリにある場合は、ドキュメント ディレクトリに再コピーできるようにするため)。の日付)。MyAppVersionNumberMyApp_vers.c で定義されている変数は、ビルド中に自動生成されます。.o ファイルで生成され、リンクされたアプリ自体の (以前のバージョン?) に表示されます。これまでのところ、とても良いようです。

だから今、私はこれを使用する必要がextern double MyAppVersionNumberある.mファイルで を宣言しました (そして、後でNSLog開始するためのステートメントでそれを使用しようとしました)。iPhone シミュレーター用にビルドしようとすると、リンク エラーが発生します。

  "_MyAppVersionNumber", referenced from:
      _MyAppVersionNumber$non_lazy_ptr in HelpViewController.o
     (maybe you meant: _MyAppVersionNumber$non_lazy_ptr)
ld: symbol(s) not found
collect2: ld returned 1 exit status

では、これをリンクさせるには、別の方法で何をする必要がありますか?

私は $non_lazy_ptr と agvtool をグーグル検索しましたが、何も得られませんでした。$non_lazy_ptr だけで、いくつかのことが得られましたが、ほとんどがライブラリに適用されましたが、これは実際にはそうではありません (そうですか?)。そして、これまでの掘り下げでは、変数の使用について実際に詳細に説明している agvtool に関するページをまだ見つけていません。 .

これに精通している人、および/またはその他の方法で助けを提供できる人はいますか?

ありがとう!

4

1 に答える 1

1

agvtool は plist の CFBundleVersion 値を更新するため、実行時に次のようにバージョン番号にアクセスすることをお勧めします。

NSDictionary *mainDictionary = [[NSBundle mainBundle] infoDictionary];
double myVersionNumber = [(NSString *)[infoDictionary objectForKey:@"CFBundleVersion"] doubleValue];
于 2011-03-15T06:16:27.120 に答える