【问题标题】:Symbol(s) not found for architecture x86_64 - iOS未找到适用于 x86_64 架构的符号 - iOS
【发布时间】:2018-07-04 20:26:07
【问题描述】:

我有一个用 Objective C 编写的现有项目 (EP)。我们的团队决定用 Swift 开发一个新项目 (NP),并将现有项目(用 Objective C 编写)添加为新项目中的一个功能 (在一个选项卡中显示现有应用程序作为一项功能)。

这是我所做的:

  1. 在 Swift 中创建了一个新项目,并将现有项目添加为 Xcode 中的子项目

  2. 在新项目的构建阶段,我将现有项目(构建产品)添加为目标依赖项。

  3. 为 Swift 项目(新项目-Bridging-Header.h)创建了一个桥接标头,并将 Objective-C 桥接标头中的标头称为 NP/NP-Bridging-新项目的Build Settings下的Header.h

  4. 在标题搜索路径下,我添加了 $(SRCROOT)/Path_To_Sub_Project 并将其设置为递归。 (在项目和新项目的目标中)

  5. Other Linker Flags下,添加了-all_load-ObjC

  6. 在桥接头文件中添加了所需的 Objective-C 文件。

问题: 在一个新项目中,当我尝试引用目标 c 类时,我遇到了引用问题。

ViewController.swift
  //viewdidload
   let vc = HomeViewController() //This is an objective c class.

HomeViewController 被 Xcode 识别,因为它在键入时自动填充,并且 Xcode 没有引发任何实时问题。但是当我尝试构建新项目时,出现以下错误。

错误:

"_OBJC_CLASS_$_HomeViewController", referenced from:
      objc-class-ref in ViewController.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

珍惜你的时间。

【问题讨论】:

    标签: ios objective-c swift


    【解决方案1】:

    我怀疑问题与您正在编译的架构有关。

    【讨论】:

    • 我尝试了全新的 objc 和 swift 项目。但我得到了同样的错误
    • 在项目设置下有一个设置有效架构​​。您必须选择“x86_64”并且 objc 没有编译该版本。如果您删除该设置并坚持使用 arm64、armv7 armv7s,那么我认为它会起作用。 (我只是猜测)。可能是您正在为 objC 库不支持的早期 iOS 版本(如 7 或 8)构建。
    猜你喜欢
    • 2014-08-12
    • 2012-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多