我一直在为我的一个iPhone应用程序使用agvtool,并且最近找到了我想要能够检查版本变量的原因(这样我就可以将帮助内容重新复制到Documents目录中,如果它过期了)。MyApp_vers.c中定义的变量MyAppVersionNumber是在构建过程中自动生成的。它在.o文件中生成,并显示在(上一版本?)链接的应用程序本身。到目前为止,看起来还不错。
所以现在我已经在.m文件中声明了一个extern double MyAppVersionNumber,在这里我需要使用它(稍后尝试使用它,只是在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的页面,它实际上讨论了使用变量的任何细节--我读到的那些只是随意地声明了一个外部变量,我已经做到了。
有没有人熟悉这一点,并且/或者能够提供任何帮助?
谢谢!
发布于 2011-03-15 14:16:27
由于agvtool会更新plist的CFBundleVersion值,因此我建议在运行时使用以下命令访问版本号:
NSDictionary *mainDictionary = [[NSBundle mainBundle] infoDictionary];
double myVersionNumber = [(NSString *)[infoDictionary objectForKey:@"CFBundleVersion"] doubleValue];https://stackoverflow.com/questions/3376525
复制相似问题