Ошибка ссылки $non_lazy_ptr с переменными версии agvtool?

Я использую agvtool для одного из моих приложений для iPhone по общему принципу, и недавно нашел причину, по которой я хочу иметь возможность проверить переменную версии (чтобы я мог повторно скопировать справочный контент в каталог Documents, если он устарел). Переменная, MyAppVersionNumber, определенный в MyApp_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, в которой подробно рассказывается об использовании переменных - те, которые я прочитал, просто случайно говорят об объявлении переменной extern, что я и сделал,

Кто-нибудь знаком с этим и / или иным образом может оказать любую помощь?

Спасибо!

1 ответ

Поскольку agvtool обновляет значение CFBundleVersion вашего plist, я предлагаю получить доступ к номеру версии во время выполнения с помощью:

NSDictionary *mainDictionary = [[NSBundle mainBundle] infoDictionary];
double myVersionNumber = [(NSString *)[infoDictionary objectForKey:@"CFBundleVersion"] doubleValue];
Другие вопросы по тегам