带有 Objective-C 文件的 Swift Cocoapods 给出了未定义的符号

Posted

技术标签:

【中文标题】带有 Objective-C 文件的 Swift Cocoapods 给出了未定义的符号【英文标题】:Swift Cocoapods with Objective-C files gives Undefined symbols 【发布时间】:2019-07-03 12:02:32 【问题描述】:

我遇到了以下错误信息:

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

【问题讨论】:

有点不清楚。发生此错误时,请告诉我们您的班级有什么。 如果你正在使用任何 pod,请删除 pod 文件夹并删除派生数据,清理并重新构建。如果您遇到同样的错误,请参考此链接:***.com/questions/38298322/… 贴一些代码,说明你遇到这个错误的步骤,否则无法提供帮助 每个好问题都有以下之一:? 【参考方案1】:

您是否尝试过启用动态框架?这对我有用。

为此,请转到工作区中的 podfile 并打开它,然后:

#Uncomment the next line if you're using Swift or would like to use dynamic frameworks
remove the hash here ->  #use_frameworks!

【讨论】:

【参考方案2】:

这是次要的,但不要忘记退出 Xcode 并运行您的 yourProject.xcworkspace 而不是 yourProject.xcodeproj 安装 CocoaPods 后

【讨论】:

以上是关于带有 Objective-C 文件的 Swift Cocoapods 给出了未定义的符号的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在 Objective-c 项目中使用 Alamofire 的 Swift 文件?

Swift - 带有Objective-C选择器'*'的方法'*()'与具有相同Objective-C选择器的超类'UIView'中的'*'的getter冲突

将 Objective-C 框架(CocoaPod)导入 Swift?

如何在带有 SwiftPM 的 Objective-C 模块中使用 Swift 模块?

UIColor swift 扩展,带有来自 Objective-C 的类访问

我可以防止将扩展导出到 Objective-C 的 Swift 标头吗?