【发布时间】:2011-09-16 14:57:08
【问题描述】:
我要在这里提前道歉。我正在从事的项目处于几个 NDA 之下,因此我无法像通常希望的那样具体。
我正在开发一个包含 .h 和 .a 文件形式的预编译库的 iOS 项目。我开始使用该库的特定版本进行开发,一切正常。他们已经发布了一个新版本,我需要它来实现特定的新功能。
在新旧版本之间,有几个函数名称发生了变化。当我更新代码以调用新方法时,我在编译时收到Apple Mach-O Linker Error:(名称已更改以保护无辜者)
Undefined symbols for architecture armv7:
"methodName", referenced from:
myMethod() in MyClass.o
ld: symbol(s) not found for architecture armv7
collect2: ld returned 1 exit status
我知道它看起来只是不包含 armv7 代码,但这实际上是一个红鲱鱼。如果我将项目和目标的架构构建设置都设置为Standard (armv6 armv7),我会得到相同的链接器错误,除了它会显示 armv6。
问题是,我可以将新的 .h 和 .a 文件放在一个新项目中并调用相同的方法,而不会出现链接器错误!
我感觉有些东西没有得到清理,它正试图针对旧的 .a 文件进行编译。我在雪豹上使用 Xcode 4.1。我已经尝试从项目中删除文件,从目标的Build Phases 下的Link Binary With Libraries 部分删除.a 文件,清理,添加回.a 文件并重建,但我仍然收到错误。我这里开始发疯了。
【问题讨论】: