2015-07-10 122 views
2

直到我升级到XCode 6.4项目工作正常,但升级后,我已经建立失败zipzap煮沸。XCode 6.4打破项目与zipzap依赖

使用CocoaPod 0.37.2

荚 'zipzap', '〜> 8.0'

链接框架和库= libz.1.2.5.dylib

定位的iOS 7.0 +

构建失败

Undefined symbols for architecture arm64: 
    "___cxa_begin_catch", referenced from: 
     ___clang_call_terminate in libPods-Ally-zipzap.a(ZZArchive.o) 
    "std::terminate()", referenced from: 
     ___clang_call_terminate in libPods-Ally-zipzap.a(ZZArchive.o) 
    "___gxx_personality_v0", referenced from: 
     +[ZZArchive archiveWithURL:error:] in libPods-Ally-zipzap.a(ZZArchive.o) 
     +[ZZArchive archiveWithData:error:] in libPods-Ally-zipzap.a(ZZArchive.o) 
     -[ZZArchive initWithURL:options:error:] in libPods-Ally-zipzap.a(ZZArchive.o) 
     -[ZZArchive initWithData:options:error:] in libPods-Ally-zipzap.a(ZZArchive.o) 
     -[ZZArchive initWithChannel:options:error:] in libPods-Ally-zipzap.a(ZZArchive.o) 
     -[ZZArchive loadCanMiss:error:] in libPods-Ally-zipzap.a(ZZArchive.o) 
     -[ZZArchive updateEntries:error:] in libPods-Ally-zipzap.a(ZZArchive.o) 
     ... 
ld: symbol(s) not found for architecture arm64 

我所做的事情至今

  1. 对于项目和荚项目两个:构建设置> C++标准库=的libstdC++(原本是的libC++)
  2. 几次荚deintegrate &的& RM * .lock & &吊舱安装

回答

1

我已经遇到此问题,以及 - 在ZipZap podspec已经更新失去在这个过程中的一些编译器标志:

https://github.com/pixelglow/ZipZap/commit/0e4e6aa885196640ca86462c6748e68a50c66ee9

我解决了这个在我的项目是恢复编译器标志(即是更新之前存在)如下方式:

  • 浏览到您的工作空间荚项目
  • 选择豆荚,zipzap目标
  • 选择构建阶段选项卡
  • 展开编译源代码部分
  • 选择所有的Objective-C++文件(扩展名为.mm) - 按住CMD键选择多个文件
  • 添加编译器标志:-fno-objc-例外-fno-例外-std = C++ 11 -stdlib = libc的++ -DOS_OBJECT_USE_OBJC = 0
  • 选择所有目标C文件(.M)除了豆荚-zipzap-dummy.m
  • 添加编译器标记:-fno-objc的例外-std = c99 -DOS_OBJECT_USE_OBJC = 0
  • 选择一个C++文件(.cpp)
  • 添加编译器标志:-fno-exceptions -std = C++ 11 - stdlib = libC++ -DOS_OBJECT_USE_OBJC = 0

如果你有一个测试目标,你可能还需要在那里添加相同的标志。一切都很好,你现在应该能够再次建立。

[更新]:将Cocoapods升级到版本0.38.0也将解决错误,但可能导致当前使用ZipZap 8.0.4编译错误 - 请参阅https://github.com/pixelglow/ZipZap/issues/105

或者,您可以回滚到Podfile中的ZipZap 8.0.3。