Xcode 6.3 swift框架:体系结构x86_64的未定义符号

时间:2015-04-11 12:35:59

标签: swift xcode6

我更新到Xcode 6.3,但现在我的项目(框架)将不再构建。这是一个纯粹的快速项目。我的所有文件都正确编译(选中“编译swift源文件”部分),但是我的测试得到了一个链接错误(myProjectTests.xctest):

    Undefined symbols for architecture x86_64:
  "__TWPSiSs10Comparable14MathEagleTests", referenced from:
      __TFC14MathEagleTests11MatrixTests45testRandowWithDimensionsIntervalGeneratorInitfS0_FT_T_ in MatrixTests.o
      __TFC14MathEagleTests11MatrixTests21testSubscriptRangeSetfS0_FT_T_ in MatrixTests.o
      __TFC14MathEagleTests11MatrixTests35testSubscriptRowRangeColumnRangeSetfS0_FT_T_ in MatrixTests.o
      __TFC14MathEagleTests11MatrixTests30testSubscriptRowRangeColumnSetfS0_FT_T_ in MatrixTests.o
      __TFC14MathEagleTests11MatrixTests30testSubscriptRowColumnRangeSetfS0_FT_T_ in MatrixTests.o
      __TFC14MathEagleTests11MatrixTests13testMatrixMapfS0_FT_T_ in MatrixTests.o
      __TFC14MathEagleTests11MatrixTests24testMatrixMapPerformancefS0_FT_T_ in MatrixTests.o
      ...
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

奇怪的是,Comparable是一个快速的内置协议,所以我认为它与我的代码没有任何关系? 所有引用都来自我的测试文件,因此它不是我的主要项目...

3 个答案:

答案 0 :(得分:5)

升级Xcode后,

始终执行干净的构建:

  • 产品 - >清洁
  • 产品 - > (按住Alt键)清洁构建文件夹

然后转到Window-> Projects,选择您的项目并删除派生数据。

然后再次编译。

答案 1 :(得分:1)

我在实施CocoaPods时遇到此错误,而未将我的目标Other Linker Flags设置为$(inherited)

答案 2 :(得分:1)

我终于找到了解决方法。我使用了几个这样的协议:

extension Int: Addable, Negatable, Substractable, Multiplicable, Dividable, Modulable, Powerable, SetCompliant, BasicMathValue, FullMathValue, MatrixCompatible {}

我认为该错误是由于这些协议中的一些使用Comparable协议,例如:

protocol FullMathValue: Equatable, Comparable, Addable, Negatable, Substractable, Multiplicable, Dividable, Powerable, SetCompliant, IntegerLiteralConvertible {}

当我将Comparable协议明确地添加到扩展时,一切正常:

extension Int: Comparable, Addable, Negatable, Substractable, Multiplicable, Dividable, Modulable, Powerable, SetCompliant, BasicMathValue, FullMathValue, MatrixCompatible {}

奇怪的是,错误只是由Int和UInt类型引起的,所以所有Int8,...和UInt8 ......也是如此。 Float和Double没有造成任何麻烦。

这是我需要报告的错误,还是有这种行为的解释?