llvm libc ++中缺少Hashtable类

时间:2019-01-02 14:35:09

标签: android-ndk libstdc++ libc++

我正在将Android项目中的标准库从gnustl(libstdc ++)迁移到llvm-libc ++。 在其中一个项目中,我遇到了缺少头文件

的多个错误
  fatal error: 'hashtable.h' file not found
#include "hashtable.h"
         ^~~~~~~~~~~~~
clang++.exe: error: clang frontend command failed due to signal (use -v to see invocation)
Android clang version 5.0.300080  (based on LLVM 5.0.300080)

预处理文件输出显示该文件由gnustl提供

.. f:/nugetcache/androidndk.16.1.1/sources/cxx-stl/gnu-libstdc++/4.9/include/backward\\hashtable.h

但是,当我迁移到libc ++之后,我在libc ++中找不到等效的头文件。该头文件声明类HashTable

template<class _Val, class _Key, class _HashFcn,
       class _ExtractKey, class _EqualKey, class _Alloc>
    class hashtable
    {...}

我尝试在libc ++代码中搜索此标头和此类,但找不到任何内容。我认为这是一个重要的类,必须由libc ++以某种形式提供,但我无法识别它。

有人因为这种差异而遇到错误,建议的解决方法是什么?

2 个答案:

答案 0 :(得分:2)

  

我尝试在libc ++代码中搜索此标头和此类,但找不到任何内容。我认为这是一个重要的类,必须由libc ++以某种形式提供,但我无法识别它。

这是libstdc ++扩展名,是C ++之前11天遗留下来的。

如果查看内容here,您会发现它的顶部带有注释:这是一个内部头文件,其他库头文件也包含该文件。请勿尝试直接使用它。

答案 1 :(得分:0)

libc ++不包含该头文件,并且包含用于不同类地图的更特定的接口。

因此@marshall指出这一点是正确的,因为他说我们根本不需要该标头。