【问题标题】:Mach-O Linker Error When Adding Unit Tests - XCode添加单元测试时出现 Mach-O 链接器错误 - XCode
【发布时间】:2014-02-04 12:48:01
【问题描述】:

我正在尝试将 OCUnit 测试添加到现有项目(在 XCode 4.6.3 中)。我按照这里的说明进行操作 - http://twobitlabs.com/2011/06/adding-ocunit-to-an-existing-ios-project-with-xcode-4/ 但是只有在尝试运行测试时我才会收到 78 个 Mach-O 错误。我可以编译主目标就好了。

需要注意的一点我还没有修改测试,它们只是标准模板。我不确定我做错了什么。

一条错误消息

架构 i386 的未定义符号:“_AudioComponentFindNext”, 参考自: libNuanceSpeechAnywhere.a 中的 l651(libSpeechKit.a-i386-master.o) libNuanceSpeechAnywhere.a(libSpeechKit.a-i386-master.o) 中的 l652

这是一堆错误的屏幕截图。

【问题讨论】:

  • 您是否在测试目标中包含了 AudioUnit 框架?也许您只在应用程序目标的依赖项中指定了它,而不是测试目标。

标签: ios xcode ocunit


【解决方案1】:

您必须先将AudioUnit 框架添加到您的项目中,然后再重新构建它。

这是您项目的how you add frameworks

【讨论】:

  • 这似乎可行,但我很困惑为什么当我的测试没有以任何方式链接到我的应用程序时它是必要的。你能解释一下为什么需要这样做吗?
  • @ansible 我不完全确定你是如何构建你的测试的,但我猜你在应用程序的某个地方使用了这个框架,并且测试可能正在模拟使用该框架的类。只是一个非常疯狂的猜测。
  • 不,只有一个默认测试,只有一个默认测试断言失败。
  • @JayprakashDubey 我现在正在进行 iOS 8.1 项目,它就在那里。
  • @JayprakashDubey 也许你已经添加了?也许您的错误与OP的错误不同?我可以在这里看到 AudioUnit:dropbox.com/s/mvncz9ltv1w4ic4/…
【解决方案2】:

在我用头敲击键盘几个小时后,如果您使用的是 CocoaPods,我找到了这个解决方案:

在您的 podfile 中,添加您的测试目标以及必要的依赖项

workspace 'MyProject'

target 'MyProject' do

  use_frameworks!

  pod 'Alamofire', '~> 4.0'
  pod 'RealmSwift'

end

target 'MyProjectTests' do
    use_frameworks!

    pod 'Alamofire', '~> 4.0'
    pod 'RealmSwift'

end

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['SWIFT_VERSION'] = '3.0'
    end
  end
end

然后运行 ​​pod install ,一切都应该正确配置。我建议运行 pod install --verbose 以便查看是否有任何警告。如果你手动编辑了构建配置,Pod 会报错。遵循建议,然后重新安装。像魅力一样工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-29
    • 2013-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-31
    • 2017-11-14
    相关资源
    最近更新 更多