Swift 测试链接器错误

标签 swift compilation linker linker-errors

我有一个 Swift 测试,它使用我编写的一些 Objective-C 代码:

class ParserServiceTest: QuickSpec {
    override func spec() {
        var x : MyClass? // this works
        x = MyClass()    // this does not
    }
}

当我尝试构建项目时,我收到错误消息:

Undefined symbols for architecture i386:
  "_OBJC_CLASS_$_MyClass", referenced from:
      __TTSf4d___TTSf4g___TFC11MyProjectTests17ParserServiceTest4specfS0_FT_T_ in ParserServiceTest.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

最佳答案

您需要在测试目标中包含 objective-c。在您的目标列表中,选择“...测试”目标,然后选择“构建阶段” Pane 。查看“编译源代码”或“将二进制文件与库链接”(取决于您的代码是来自源代码还是库),并确保您需要的所有文件都在那里。您需要为可执行项目做的大部分事情,也需要为测试项目做。

在文件检查器实用程序面板(右侧面板)中,您还可以将目标成员资格添加到单个文件。

关于Swift 测试链接器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32011892/

相关文章:

iphone - 编译 iPhone XCode 项目以在 Android 上运行

c++ 链接器错误 'relocation R_X86_64_32 against ` .rodata.str1.1' Linking CXX shared library libsrt.so

c - C编译涉及哪些内部过程?

ios - 如何将字符串转换为 PFObject

Swift - 大到小标题转换

arrays - 查找数组中所有元素实例的索引

C++ 单例实现 - 静态问题

ios - 如何使测验的答案标签在写出正确答案时显示正确,在写出错误答案时显示错误?

ios - ios如何将Objective-C转换为C语言

c++ - 为什么我可以在多个包含const int的cpp文件中包含一个头文件而不会出现编译错误?