Xcode 11.5 使用 .C 源时架构 arm64 的未定义符号

Xcode 11.5 Undefined symbols for architecture arm64 when using .C source

我正在尝试在 Swift 项目中为 iOS 使用一些 C 代码。

C 代码附带一个 makefile,它将为 x86_64 架构编译静态 .a 库。显然,要在 iOS 中使用此代码,我们需要 arm64 兼容性。

我尝试了几种不同的方法,包括:

  1. 将 C 源文件和头文件直接扔到项目中,在桥接头文件中列出 C 头文件。
  2. 与方法 #1 相同,但通过 Objective-C 中介路由我的 C 调用。
  3. 使用 Swift 包管理器将 C 代码打包到一个框架中,我可以放入项目中。

在方法 #1 和 #2 中,Xcode 为我提供了代码补全和语法高亮显示功能,因此我知道 C 头文件已被拾取,但在编译时出现错误:

Undefined symbols for architecture arm64

如果我尝试调用我自己编写的简单 C 函数,一切正常。所以我想知道我尝试使用的较低级别 C 中是否有与 arm64 不兼容的东西,或者我是否可能只需要修改我的 Xcode 构建设置中的某些东西。

通过确保所有文件都列在编译源文件中解决了这个问题