0

我一直在努力让 protobufs 3 为 iOS 编译/运行。一切都编译,但在运行时我得到:

dyld: Library not loaded: /usr/local/lib/libprotobuf.15.dylib
Referenced from: /path/to/TheApp.app/TheApp
Reason: no suitable image found.  Did find: 
    /usr/local/lib/libprotobuf.15.dylib: mach-o, but not built for iOS simulator

这是我的步骤:

  1. 使用这个出色的脚本为所有架构编译静态库。
  2. 将静态库添加到编译目标选项卡Linked Frameworks and Libraries下的部分。General
  3. 构建 => 成功
4

1 回答 1

0

首先,我认为构建脚本实际上并没有构建静态库。我浏览了脚本并使用 和 之类的工具检查了构建lipo输出otool。看起来正确。

然后我在构建输出中遇到了这个警告:

URGENT: building for iOS simulator, but linking against dylib (/usr/local/lib/libprotobuf.dylib) built for OSX

我再次检查了构建目标,以确保我的目标是 iOS。行。

然后我开始寻找为什么它会链接到动态库,即使一切都是静态的,并在互联网上看到一篇文章说 OSX 更喜欢链接到 DLL 而不是静态库。如果你想解决这个问题,你必须设置你的构建命令某种风格。我在 Xcode 编辑器中,所以我没有做翻译这个练习。

然而,鉴于此,我删除了对动态库的引用,以观察对静态的回退:

rm /usr/local/lib/libprotobuf.dylib

建造。跑。成功。

所以原因是已知的,但这个答案是不完整的。请编辑此答案并提供有关如何让 Xcode 强制静态链接与达到 dylib 的详细信息,与仅删除 dylib 参考

于 2018-01-20T11:40:37.803 回答