我一直在使用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
Run Code Online (Sandbox Code Playgroud)
那么,我需要做些什么来让这个链接?
我用google搜索了$ non_lazy_ptr和agvtool,并且什么也没有得到,只有$ non_lazy_ptr,它提供了一些东西,但主要是应用于库,这不是,真的(是吗?).到目前为止,在我的挖掘中,我还没有出现一个关于agvtool的页面,它实际上讨论了使用变量的任何细节 - 我读过的那些只是随便说出来的一个extern变量,我已经完成了.
有人熟悉这个,和/或能否提供任何帮助?
谢谢!
为什么Leopard会使用$ non_lazy_ptr来破坏一些符号?更重要的是,修复未定义的符号错误的最佳方法是什么,因为符号已经被$ non_lazy_ptr修改了?