【问题标题】:Linker Error - Project not cleaning entirely?链接器错误 - 项目没有完全清理?
【发布时间】: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 文件并重建,但我仍然收到错误。我这里开始发疯了。

【问题讨论】:

    标签: ios xcode4 linker


    【解决方案1】:

    好的 - 我找到了罪魁祸首!自然是在构建设置中。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多