gpt4 book ai didi

c++11 - Boost 链接错误 : 'B5cxx11' symbols missing

转载 作者:行者123 更新时间:2023-12-04 21:08:42 26 4
gpt4 key购买 nike

问题是:我使用的代码使用了一个与 boost 链接的大库。当我使用静态链接编译时,一切正常。然而,当我尝试动态链接时,我得到了一堆 undefined reference 错误。第一个想法显然是“我没有链接 boost program_options”库,但我看了看,它在链接命令中(并且在需要它的库之后)。然而,在不同的错误中,这一点很突出:

undefined reference to `_ZN5boost15program_options3argB5cxx11E

在我的日常经验中,链接错误的形式通常是“对某个函数的 undefined reference (...)”。所以我去了我的boost库的安装文件夹并使用了 readelf看看我在图书馆里有什么符号 libboost_program.so .事实上,那个符号并没有出现。相反,我找到的最接近的是 _ZN5boost15program_options3argE .

谷歌了一下,我发现多余的部分 B5cxx11是自 C++11 以来名称 mangling 的新增内容。看起来 boost(至少版本 1.59.0)还不支持这个新的名称修改。

所以我的问题是:这是一个已知问题吗?有什么解决方法?为什么这个问题没有出现在静态链接中?

编辑:以防将来有人偶然发现这个问题,我只是尝试了 boost 1.60.0,并且符号包含字符串 B5cxx11 .我相信(阅读:希望)这将解决问题。但是,作为双重检查,我将再次重新编译 boost 1.59.0 以查看这是否是由于我在环境中更改的某些内容(尽管我对此表示怀疑)。

最佳答案

这个问题在很多个月前就被问到了,但既然我已经登陆了这个页面,我将提出一个可能的解决方案。

您可以尝试使用 -D_GLIBCXX_USE_CXX11_ABI=0 编译您的代码标记或定义此宏:#define _GLIBCXX_USE_CXX11_ABI 0 .查看 this question 的答案更多细节。

关于c++11 - Boost 链接错误 : 'B5cxx11' symbols missing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35562604/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com