无法链接到共享库

时间:2008-09-26 20:58:10

标签: c++ stl map linker shared-libraries

我正在用g ++ 3.3.4构建一个共享库。我无法链接到图书馆,因为我正在

./BcdFile.RHEL70.so: undefined symbol: _ZNSt8_Rb_treeIjjSt9_IdentityIjESt4lessIjESaIjEE13insert_uniqueERKj

哪个c ++ filt描述为

std::_Rb_tree<unsigned int, unsigned int, std::_Identity<unsigned int>, std::less<unsigned int>, std::allocator<unsigned int> >::insert_unique(unsigned int const&)

我认为这可能来自于使用hash_map,但我已经全力以赴并切换到常规std :: map。我使用g ++进行链接,包括-lstdc++

有谁知道哪个类会实例化这个模板?或者甚至更好,我需要链接哪个库?

编辑:经过进一步审核后,在编译时会出现添加-frepo标志,不幸的是,该标志正在解决gcc3.3错误。

3 个答案:

答案 0 :(得分:1)

std::_Rb_Tree可能是红黑树,很可能是使用map。它应该是libstdc++的一部分,除非您的库链接到不同版本的libstdc++而不是应用程序,从您目前所说的内容看起来不太可能。

编辑:只是为了澄清,红黑树是map中的基础数据结构。 hash_map所做的就是在使用密钥之前对密钥进行散列,而不是使用原始值。

答案 1 :(得分:0)

在您使用地图的源文件中尝试

#include < map > 

答案 2 :(得分:0)

您似乎有两个不同版本的libstdc ++。所以从不同版本的gcc。检查你的路径。