链接器错误 - 项目没有完全清理?

时间:2011-09-16 14:57:09

标签: ios xcode4 linker

我要提前在这里道歉。我正在工作的项目属于几个NDAs,所以我不能像我通常想要的那样具体。

我正在开发一个iOS项目,其中包含一个.h和.a文件形式的预编译库。我开始使用这个库的特定版本进行开发,一切都运行正常。他们发布了一个新版本,我需要一个特定的新功能。

在旧版本和新版本之间,有几个函数名称已更改。当我更新我的代码以调用新方法时,我在编译时得到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文件进行编译。我在Snow Leopard上使用Xcode 4.1。我已尝试从项目中删除该文件,从Link Binary With Libraries下的Build Phases部分删除.a文件以获取目标,清除,添加.a文件并重建,但仍然出现错误我在这里开始变得疯狂。

1 个答案:

答案 0 :(得分:1)

好的 - 我找到了罪魁祸首!当然,它是在Build Settings中。

当我切换到新版本时,我将新库放在旧版本旁边的文件夹中,以防我不得不在某个时候切换回来。显然,当我删除旧版本时,它没有在目标的构建设置中从Library Search Paths中删除旧版本的.a文件的路径。删除旧路径,一切都恢复正常。

相关问题