gpt4 book ai didi

c++ - vector 多重定义链接错误

转载 作者:行者123 更新时间:2023-11-28 08:31:13 25 4
gpt4 key购买 nike

vector 只包含在一个源文件中。头文件中唯一包含的 STL 是字符串。但是我无法摆脱多个定义错误(下面的示例)。有什么想法吗?

./plugin_dfb.o:mipsel-linux-uclibc/include/c++/4.2.0/bits/STL_bvector.h:182: `std::operator-(std::_Bit_iterator_base const&, std::_Bit_iterator_base const&)'./painter.o:mipsel-linux-uclibc/include/c++/4.2.0/bits/STL_bvector.h:182: 首先在这里定义

最佳答案

这个 std::operator- 是一个带有外部链接的内联函数。链接器似乎不支持此类内联函数的多个定义。但是C++(ODR)的“一次定义规则”明确允许这样做。通常此类符号会获得“弱链接”(GNU 术语),但我认为目标文件格式和链接器都需要支持这一点。

我会尝试在专门针对您的平台的群组/邮件列表中提问。类似于“X 平台在链接方面支持 C++ 以及内联函数和模板的 C++ 相关单一定义规则吗?”。

您可能还想查看 GCC 文档。他们可能会提供命令行开关作为解决方法。如果您还没有使用 g++ 作为链接器的前端,您应该尝试一下。也许这也有帮助。

关于c++ - vector 多重定义链接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1974077/

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