突然出现 Apple Mach O 链接器错误

Apple Mach O Linker Error popped up out of nowhere

我目前的项目快把我逼疯了

问题出在我添加到项目中的 sdk。例如google ads, parse, Facebook and adcolony.

几周前我第一次开始我的项目时添加了它们,它们运行良好。

今天我打开了我的项目,清理了它,我开始为所有添加的 sdk 获取 "Lexical or preprocessor issues"。

我将它们全部删除并再次添加,"lexical or preprocessor issues" 消失了但被替换了 33 "Apple Mach O Linker Errors"

我不知道我做错了什么,因为什么都没有改变。我正在使用所有 sdk 的最新版本。

正如我所说,该项目已经建设好几周了。

请帮助我,因为这让我发疯!

我还知道 Stack Overflow 上已经有很多问题的答案解决了 mach-O 链接器错误,但 none 对我有帮助。

这是错误示例:

Undefined symbols for architecture arm64:
  "std::__throw_bad_alloc()", referenced from:
      std::vector<google_breakpadPFC_::DynamicImageRef, std::allocator<google_breakpadPFC_::DynamicImageRef> >::_M_insert_aux(__gnu_cxx::__normal_iterator<google_breakpadPFC_::DynamicImageRef*, std::vector<google_breakpadPFC_::DynamicImageRef, std::allocator<google_breakpadPFC_::DynamicImageRef> > >, google_breakpadPFC_::DynamicImageRef const&) in ParseCrashReporting(dynamic_images.o)
      google_breakpadPFC_::DynamicImageRef* std::vector<google_breakpadPFC_::DynamicImageRef, std::allocator<google_breakpadPFC_::DynamicImageRef> >::_M_allocate_and_copy<google_breakpadPFC_::DynamicImageRef*>(unsigned long, google_breakpadPFC_::DynamicImageRef*, google_breakpadPFC_::DynamicImageRef*) in ParseCrashReporting(dynamic_images.o)
  "std::string::find_first_not_of(char const*, unsigned long, unsigned long) const", referenced from:
      MacStringUtilsPFC_::IntegerValueAtIndex(std::string&, unsigned int) in ParseCrashReporting(string_utilities.o)
  "std::string::substr(unsigned long, unsigned long) const", referenced from:
      MacStringUtilsPFC_::IntegerValueAtIndex(std::string&, unsigned int) in ParseCrashReporting(string_utilities.o)
  "std::string::find_first_of(char const*, unsigned long, unsigned long) const", referenced from:
      MacStringUtilsPFC_::IntegerValueAtIndex(std::string&, unsigned int) in ParseCrashReporting(string_utilities.o)
  "vtable for __cxxabiv1::__si_class_type_info", referenced from:
      typeinfo for google_breakpadPFC_::IosExceptionMinidumpGeneratorPFC_ in ParseCrashReporting(ios_exception_minidump_generator.o)
  NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.

几年前我遇到过同样的问题。这是由于添加框架时勾选 "Copy items into destination's group folder (if needed)" 引起的。此选项告诉 Xcode 将您要添加的文件复制到项目目录中。这对图像、声音等资源很有用,因为它将整个项目保存在一个地方,而不是分散在计算机各处,但如果你使用框架执行此操作,你会混淆预处理器 and/or 链接器因为它弄乱了搜索路径。