添加单元测试时的Mach-O链接器错误 - XCode

时间:2014-01-15 20:42:34

标签: ios xcode ocunit

我正在尝试将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中的l652(libSpeechKit.a-i386-master.o)

以下是一系列错误的屏幕截图。

enter image description here

2 个答案:

答案 0 :(得分:3)

在我的头撞击键盘几个小时之后,如果您使用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会抱怨它。按照建议,然后重新安装。像魅力一样。

答案 1 :(得分:1)

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

这是您项目的how you add frameworks