clang.cindex.LibclangError "Undefined symbol clang_CXXRecord_isAbstract"

clang.cindex.LibclangError "Undefined symbol clang_CXXRecord_isAbstract"

我正在尝试使用下一个命令执行 clang 5.0,但它不起作用。我输入:

import clang

import clang.cindex

clang.cindex.Config.set_library_file('/usr/lib/x86_64-linux-gnu/libclang-5.0.so.1')

id = clang.cindex.Index.create()

我收到以下错误:

clang.cindex.LibclangError: /usr/lib/x86_64-linux-gnu/libclang-5.0.so.1: undefined symbol: clang_CXXRecord_isAbstract. Please ensure that your python bindings are compatible with your libclang.so version.

我正在使用带有来自 https://github.com/llvm-mirror/clang

的绑定的 clang-5.0

Windows

我现在还没有测试过,但一个月前它对我有用。

  1. 从 github 下载 src code 并转到 /bindings/python/ 并复制 clang 目录并将其粘贴到您的 python 站点包中dir 或(两者都试) pip install clang-5

  2. 下载llvm binares。如果你有 python-32bit 然后安装 llvm 32bit!!否则它不会工作。对于 64 位 python 安装 64 位二进制文​​件

  3. 在您的 python 程序中只需 import clang.cindex as cl 并在您的代码中执行 cl.Config.set_library_file("your/path/to/libclang.dll") libclang.dll 应该在你的 clang/bin 安装目录下

Linux

运行 现在就可以,所以对我有用

  1. pip3 install clang-5

  2. 从您的包管理器获取 llvm-clang 或 llvm-clang-32 位 取决于您的 python 安装

  3. 在您的 python 程序中只需 import clang.cindex as cl 并在您的代码中执行 cl.Config.set_library_file("your/path/to/libclang.so")

根据我的经验,libclang.so 应该位于 /usr/lib32/ 或 usr/lib64/

希望对您有所帮助!