首页 文章

尝试将胖二进制文件与64位模拟器目标链接时出错

提问于
浏览
1

我有一个静态库lipo'd for iOS和OS X有5个架构(x86_64,i386,armv7,armv7s,arm64) .

  • x86_64架构是使用macosx SDK构建的

  • i386架构是使用iphonesimulator SDK构建的

  • ARM体系结构是使用iphoneos SDK构建的

当我尝试在示例App中链接生成的库时,它在构建设备或32位iOS模拟器目标时起作用 . 但是当我尝试为64位iOS模拟器目标构建它时,我收到链接器错误:

ld: framework not found CoreServices for architecture x86_64

如果我从胖库中删除x86_64切片,它适用于所有设备和模拟器 .

我认为这是因为链接器更喜欢x86_64架构,如果它适用于64位模拟器 . 但由于它是为macosx SDK编译和链接的,因此它以某种方式编码了OS X依赖项 .

我尝试为iphonesimulator SDK添加第二个x68_64切片,但是lipo不会让我 . 此外,我试图找到一种方法,使模拟器甚至为64位版本使用i386架构,但到目前为止还没有运气 .

如果绝对必要,我可以创建2个二进制文件来解决这个问题但我真的更喜欢将它们放在一个文件中 . 有没有办法实现这个目标?

2 回答

  • 1

    项目和 beans 荚:

    构建设置--->链接框架自动将YES更改为NO,并重建静态库,这是工作!

  • 0

    我通过仅为iOS设备和模拟器构建它来解决它 . iOS模拟器SDK的64位片段同样适用于iOS和OS X目标,前提是您不需要任何其他框架,而不需要OS X和iOS之间共享的框架(仅在我的情况下为Foundation) .

相关问题