在 Mac OS X 10.6 下,我正在构建一个链接到 boost 1.46 的 C++ 共享库。我正在使用随 Xcode 4.0 安装的命令行工具。
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++)都会产生上述错误。
问题很可能是您将两个具有不同默认可见性值(-fvisibility)的库静态链接在一起。您可以确保对 boost 和您的项目使用相同的可见性标志,或者使用显式导出符号文件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)