我一直在使用agvtool
用于我的iPhone应用程序的一般原则,并且最近找到了我希望能够检查版本变量的原因(以便我可以重新复制帮助内容进入Documents目录,如果它已过期)。 MyApp_vers.c中定义的变量MyAppVersionNumber
在构建期间自动生成。它是在.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
那么,我需要采取哪些不同的方式来实现这一点?
我用google搜索了$ non_lazy_ptr和agvtool,并且什么都没有,只有$ non_lazy_ptr,它提供了一些东西,但主要适用于库,这不是,真的(是吗?)。到目前为止,在我的挖掘中,我还没有出现一个关于agvtool的页面,它实际上讨论了使用变量的任何细节 - 我读过的那些只是随便说出来的一个extern变量,我已经完成了
任何熟悉此事的人,和/或能够提供任何帮助的人?
谢谢!
答案 0 :(得分:1)
由于agvtool更新了plist的CFBundleVersion值,我建议在运行时访问版本号:
NSDictionary *mainDictionary = [[NSBundle mainBundle] infoDictionary];
double myVersionNumber = [(NSString *)[infoDictionary objectForKey:@"CFBundleVersion"] doubleValue];