Ошибка ссылки $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];