如何解决Xcode12-为iOS Simulator构建,但链接为macOS构建的目标文件,针对体系结构x86_64的文件'dir / SomeFile.a'
当我尝试构建大型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真实设备和模拟器中运行。
解决方法
无论您在哪里获得库,您都应该请求为 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
Here 是 platform
枚举的完整定义。
尝试在 Build Settings 的 User-defined 部分的 VALID_ARCHS 中添加 x86_64。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。