3

我正在使用 libclang 来做一些 C++ 的基本反射。我正在为标题创建一个翻译单元,然后使用光标访问所有树元素,在某些情况下,我会退回到 qualtypes 以获取必要的信息。现在的问题是 libclang 返回的游标类型不正确。对于下面的示例头文件:

#include <vector>
#include <string>

namespace SomeNamespace
{
    struct B
    {
        std::string m_string;
        std::vector<float> m_vector;
    };
}

我使用带有以下输入的clang_parseTranslationUnit2对其进行解析:

参数: “-x”,“c++”

选项: CXTranslationUnit_DetailedPreprocessingRecord | CXTranslationUnit_SkipFunctionBodies | CXTranslationUnit_Incomplete;

现在,当访问 struct BI 的字段时,请获取:

CXType_Int用于光标到 m_vector 而不是CXtype_Unexposed

但是对于std::string成员 m_string,我得到CXType_Unexposed,它允许我访问该字段并提取必要的信息。当访问字符串的字段时,我正确地获得了“命名空间”,然后是“typeref”游标类型。

我完全不知道发生了什么,为什么 lib clang 无法理解 std::vector 类型?

我在 2015 年 6 月 1 日获得了最新的 libclang 版本。

4

1 回答 1

-1

尝试在编译标志中添加 clang 头目录

于 2019-04-06T02:12:11.117 回答