繁体   English   中英

如何在STL中使用libclang?

[英]How to use libclang with STL?

我正在尝试使用libclang解析库,我仍然坚持这个非常简单的问题:如何用STL配置它? 目前,它无法解析翻译单元,因为它无法找到<string>

这是我试过的:

char *args[] = {"-x", "c++", "-Ic:/my/library/includes", "-IG:/Prog/libcxx-3.4/include"};
clang_parseTranslationUnit(index, "c:/my/library/test.cpp", args, 4, 0, 0, 0);

我在windows上,从llvm.org下载了预编译的clang二进制文件,我尝试了各种STL实现:

  • 视觉工作室
  • MingW平台
  • libCXX

在每种情况下,我最终都是未知的类型。

例如,使用mingw,我收到以下错误消息:

/mingw/include\wchar.h:221:71: error: unknown type name '_locale_t'
/mingw/include\wchar.h:223:81: error: unknown type name '_locale_t'
/mingw/include\stdlib.h:173:65: error: unknown type name '_locale_t'
/mingw/include\stdlib.h:175:75: error: unknown type name '_locale_t'
/mingw/include\io.h:301:14: error: unknown type name 'off64_t'
/mingw/include\io.h:301:36: error: C++ requires a type specifier for all declarations
/mingw/include\io.h:302:14: error: unknown type name 'off64_t'
/mingw/include\io.h:302:39: error: unknown type name 'off64_t'
/mingw/include\unistd.h:65:20: error: unknown type name 'off_t'

我发现关于这个主题的罕见教程没有谈论这个主题......

由于libclang是预编译的,因此它不知道编译器使用的标准库的确切路径。 在调用clang_parseTranslationUnit时,您必须告诉它有关参数列表中使用-I开关的标准包含路径。

这是我用来查找Linux上gcc的包含路径的命令。 您应该能够在Windows环境中将其调整为MinGW:

$ echo "" | g++ -v -x c++ -E -
...
#include "..." search starts here:
#include <...> search starts here:
 /usr/include/c++/4.8
 /usr/include/x86_64-linux-gnu/c++/4.8
 /usr/include/c++/4.8/backward
 /usr/lib/gcc/x86_64-linux-gnu/4.8/include
 /usr/local/include
 /usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed
 /usr/include/x86_64-linux-gnu
 /usr/include
End of search list.
...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM