在Mac OS X 10.6下,我构建了一个C++共享库,它链接到boost 1.46。我正在使用与Xcode 4.0一起安装的命令行工具。在32位版本中出现“bad codegen,pointer diff in boost”错误
64位构建工作正常。当构建为32位,我在联收到以下错误信息:
ld: bad codegen, pointer diff in boost::detail::sp_counted_base::sp_counted_base()to global weak symbol vtable for boost::detail::sp_counted_basefor architecture i386
我发现的唯一的解决方法是使用G ++ - 4.0的32位版本。我试过的其他编译器(g ++ - 4.2,llvm-g ++ - 4.2和clang ++)都会产生上述错误。
你是否设法摆脱这个警告? – 2011-12-13 09:11:04
@StéphanePéchard不,我没有设法摆脱警告。我认为只有在使用完全相同的可见性设置编译库(例如boost)时才能摆脱它。然而,这对于全系统的第三方库来说似乎并不实用。 – sakra 2011-12-13 20:26:18