无法链接到共享库
时间:2020-03-06 14:48:31 来源:igfitidea点击:
我正在使用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错误。
解决方案
std :: _ Rb_Tree可能是一棵红黑树,很可能来自使用map。除非库所链接的libstdc ++版本与应用程序版本不同,否则它应该是libstdc ++部分的一部分,从我们到目前为止所说的看来,这似乎不太可能。
编辑:只是为了澄清,红黑树是map
中的基础数据结构。 hash_map
所做的只是在使用键之前对键进行哈希处理,而不是使用原始值。
尝试
#include < map >
在我们使用地图的源文件中。
我们似乎从gcc的不同版本中有2个不同的libstdc ++。so不兼容版本。检查路径。