繁体   English   中英

当库包含在我自己的iOS自定义框架中时,无法归档

[英]Cannot Archive when a library is included in my own iOS custom framework

我按照本教程https://code.google.com/p/ios-static-framework/创建了自己的iOS框架,该教程使用静态库模板和聚合目标以及自定义运行脚本来创建框架。

起初它工作正常。 在框架项目中包含另一个库后 ,在存档或构建设备时会创建错误。 我认为问题在于该库的一些错误设置。 但我只是不知道该尝试什么。 我试过从https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/ld.1.html设置一些明智的其他链接标志,但没有运气。 任何人都可以帮忙;(

哪些步骤将重现该问题?

  1. 按照教程,但将聚合脚本架构从armv6 armv7armv7 armv7s 这是我更改的聚合目标脚本的一部分。 其他一切都是一样的。

     if [[ "$SF_SDK_PLATFORM" = "iphoneos" ]] then SF_OTHER_PLATFORM=iphonesimulator SF_ARCHS=i386 else SF_OTHER_PLATFORM=iphoneos SF_ARCHS="armv7 armv7s" fi 
  2. 将一个外部库添加到项目中,这里我使用libBlocksKit.a

  3. 构建框架,成功。
  4. 另一个儿童项目中。 包括我的构建框架。
  5. 在应用程序Target> Build Settings> Other Linker Flags中添加-ObjC
  6. 存档并获取错误。 设备构建(iPhone5)也会出错。 但建立模拟器似乎工作。

错误是什么?

这个错误,基本上是“ld:warning:找不到选项的目录...... ld:lto:无法合并...符号乘法定义!”。

ld: warning: directory not found for option '-L/Users/hlung/Dropbox/- Notes/stackoverflow/RealFrameworkApp/RealFrameworkApp/External/BlocksKit'
ld: lto: could not merge in /Users/hlung/Library/Developer/Xcode/DerivedData/RealFrameworkTest-evagqzwzyyolhjenkkjbvzibxppf/Build/Products/Debug-iphonesimulator/RealFrameworkTest.framework/RealFrameworkTest(NSObject+BlockObservation.o) because 'Linking globals named 'OBJC_CLASS_$_BKObserver': symbol multiply defined!', using libLTO version 'LLVM version 3.2svn, from Apple Clang 4.2 (build 425.0.28)' for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

如果我只使用一个架构(如armv7)存档我的子项目,它就可以工作。 它使用armv7 armv7s架构显示此错误($(ARCHS_STANDARD_32_BIT))。

您使用的是哪个版本的产品? 什么操作系统?

OS X 10.8.5,XCode 4.6.3

==更新1 ==

  • 在教程的code.google.com 页面上发布了一个问题更新:2周没有回答。
  • 从这个答案中找到了一系列有用的建议。 更新:不起作用
  • 我创建了一个项目,这样你就可以在这里自己跑步和看看

从框架内链接静态库可能会产生一些有趣的挑战......听起来你可能会从框架和应用程序项目链接到BlocksKit。

您应该只链接其中一个地方。 尝试从框架的链接库构建阶段中删除libBlocksKit.a,但将其保留在其他项目中。

你可以这样做:

  1. 点击你的项目(目标)
  2. 单击Build Settings
  3. 在“库搜索路径”下,删除路径

我希望它可以帮到你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM