我的程序在OS X 10.6上运行良好,但在10.5上出现错误,错误:
dyld: lazy symbol binding failed: Symbol not found:
__ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
当然,我的软件中没有任何神秘内容。
如何确定我在调用10.5中的库中没有的函数?
答案 0 :(得分:3)
使用c++filt
命令找出缺失函数的名称。
在您的情况下,它是std::basic_ostream<char, std::char_traits<char> >& std::__ostream_insert<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*, long)
答案 1 :(得分:1)
正如dasblinkenlight所说,c++filt
是用于解码“受损名称”的命令。
问题似乎是C ++库的实现细节可能已经改变为10.6,而使用标准库并且编译为10.6的coode与10.5不兼容。
我记得Apple发布10.3.9更新主要是为了提供与10.4.x编译的程序的兼容性;也许他们也为10.5 / 10.6做了同样的事情。您的10.5系统是否使用最新版本?
如果你想要确保你的程序在10.5上运行,即使你在10.6上构建它,请告诉XCode使用10.5 SDK来构建它。