Xcode12-为iOS Simulator构建,但链接为macOS构建的目标文件,针对体系结构x86_64的文件'dir / SomeFile.a'

时间:2020-10-01 09:50:29

标签: ios xcode linker-errors xcodebuild xcode12

当我尝试构建大型iOS应用(混合,swift + objc)时,在Xcode 12中遇到链接器错误。该应用程序可以在实际设备上正常运行,但是当我尝试使用Debug配置直接在Simulator中运行时,它会给出链接器错误。

我在其他here帖子中都尝试了所有可能的解决方案,但不幸的是它没有用。尽管其他帖子中的错误有所不同。我已将Build for active architectures only的Debug配置设为YES,将Release的配置设为NO。

其他帖子错误,

针对iOS Simulator进行构建,但链接至针对iOS ARM64架构而构建的目标文件中

我的错误,

为iOS Simulator构建,但链接为macOS构建的目标文件,为x86_64体系结构的文件

如何解决此问题?我需要同时在iOS真实设备和模拟器中运行。

2 个答案:

答案 0 :(得分:2)

无论您在哪里获得库,您都应该请求为 iOS 模拟器编译的库,而不是为 macOS 编译的库,尽管它们具有通过 lipo -info <file> 返回的相同二进制架构。

您可以使用以下命令验证您的静态 (.a) 或动态库 (.dylib) 是为 iOS 模拟器编译的:

otool -l <path-to-library> | grep platform

输出含义如下:

  • platform 7 - iOS 模拟器
  • platform 6 - Mac 催化剂
  • platform 4 - watchOS
  • platform 2 - iOS
  • platform 1 - macOS

Hereplatform 枚举的完整定义。

答案 1 :(得分:0)

尝试在 Build Settings 的 User-defined 部分的 VALID_ARCHS 中添加 x86_64。 enter image description here