我正在一个大项目中构建一个可执行文件,它的一个依赖项,一个.so文件,与boost 1.6.2链接,并且可执行文件本身必须是静态链接到不同版本的boost,我不是我知道它的版本,也许1.6.0,当我直接链接到.so时,它能够编译和链接,但是当我运行那个二进制文件时,当调用类的函数时,该二进制文件的行为变得奇怪外部的.so文件,比如它可以遇到无限锁定,而核心转储在boost内部。但如果我没有链接不同版本的boost,它就可以了。我想boost的版本引起了这个问题。真的吗?我该如何解决这个问题?
答案 0 :(得分:1)
最安全的做法是重命名静态链接版本的boost命名空间,以确保没有符号冲突。不幸的是,我认为boost没有任何用于更改其命名空间的宏,因此您必须在源代码中进行手动查找和替换。