我在我的应用程序中使用了名为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)
答案 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
相关联,但我不认为差异很重要。)