当我尝试构建大型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真实设备和模拟器中运行。
答案 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
- macOSHere 是 platform
枚举的完整定义。
答案 1 :(得分:0)