C++ 动态链接器-如何查找缺少的符号

C++ 动态链接器-如何查找缺少的符号,c++,xcode,macos,dynamic-linking,C++,Xcode,Macos,Dynamic Linking,我的程序在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版本的库中不存在?使用c++filt命令确定缺少的函数的名称 在您的例子中,它是std::bas

我的程序在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版本的库中不存在?

使用
c++filt
命令确定缺少的函数的名称


在您的例子中,它是std::basic_ostream&std::_ostream_insert(std::basic_ostream&,char const*,long)

正如dasblinkenlight所说,
c++filt
是用于解码“损坏的名称”的命令

<>问题似乎是C++库的实现细节可能已经改变了10.6,使用标准库的CODE被编译为10.6,与10.5不兼容。 我记得苹果发布10.3.9更新主要是为了提供与10.4.x编译程序的兼容性;也许他们在10.5/10.6的时候也是这样。您的10.5系统是否使用最新版本

如果您想绝对确保您的程序在10.5上运行,即使您是在10.6上构建的,请告诉XCode使用10.5SDK来构建它