Apple Mach-o Linker Error架构i386的未定义符号:

时间:2014-05-20 06:16:28

标签: ios iphone xcode5

我在我的应用程序中使用了名为IDchecker的第三方框架,当我运行代码时,我收到链接器错误。我尝试将-ObjC和-lstdc ++添加到其他链接器标志但它对我不起作用。你能说出这种错误的真正原因吗?

Apple Mach-o Linker Error
Undefined symbols for architecture i386:
  "std::ios_base::Init::Init()", referenced from:
      __GLOBAL__I_a in IDCheckerSDK(IDCheckerSDK.o)
      __GLOBAL__I_a in IDCheckerSDK(IDCCameraViewController.o)
      __GLOBAL__I_a in IDCheckerSDK(IDCImageProcessor.o)
      __GLOBAL__I_a in IDCheckerSDK(IDCFaceLinkViewController.o)
      __GLOBAL__I_a in IDCheckerSDK(UIImage+OpenCV.o)

3 个答案:

答案 0 :(得分:1)

该框架可能尚未使用i386 arch进行编译。

运行:

file yourframework.framework/yourframework
e.g. file Test.framework/Test

如果您在输出中看不到 for architecture i386 ,则缺少该特定的拱门。

答案 1 :(得分:1)

根据建议和其他人的使用......

链接C ++ lib似乎存在问题。 请在目标的构建阶段包含libstdc++.6.0.9.dylib。 这应该解决问题

希望这会有所帮助......

<强> *********** EDIT *****************

感谢@trojenfoe指出这一点。 虽然这目前正在运行,但对于更稳定的解决方案,建议链接到libstdc++.dylib。在目标的Link binary with libraries标签的Build Phases下。

答案 2 :(得分:1)

我认为接受的答案是错误的,因为链接反对这样一个特定版本的运行时库会在库更新时导致问题。

相反,我建议您不要使用其他链接器标志构建设置,而是建议您链接到 Link Binary With Libraries 部分中的libstdc++.dylib < em> Build Phases 项目设置。我已经在Xcode 5下完成了这个问题而没有问题(但是我与libc++.dylib相关联,但我不认为差异很重要。)