利用Clang(Python接口)来解析C++
1 背景说明
最近希望利用开源库来解析C++头文件,并做一些自动翻译、自动注释之类的工作。经过两天的调研,发现clang最有希望满足需求。clang提供了三套接口来共外部使用,liblang最适合作为独立工具开发使用。不过提供的原生接口是C++的,成本略高,本文记录下libclang的Python接口使用方法。
相关文档及下载链接如下:
clang(llvm) 接口官方文档:http://clang.llvm.org/docs/Tooling.html
clang(llvm) 下载页面(源码/二进制):http://releases.llvm.org/download.html#8.0.0
llvm非官方Python接口工程(不需要单独下载):https://github.com/llvm-mirror
2 clang(llvm) Python接口安装
MacOSX平台的方法可以参考这篇文章《Parsing C++ in Python with Clang》
Windows平台安装方法如下:
(1)安装 clang(llvm) 可执行二进制包,请看前文的clang(llvm)下载页面;
(2)安装clang 的Python三方库:
pip install clang==版本号 # 我这里没有输入版本号也没问题 或者 python setup.py install # 自行下载clang(llvm)的Python工程
(3)在Python工程中需要指定 libclang.dll (Linux平台对应是libclang-8.0.so.1)所在路径,可以自行搜索一下(例如现在是 C:\Program Files\LLVM\bin\libclang.dll )
from clang.cindex import Config
from clang.cindex import Index
libclangPath = r'C:\Program Files\LLVM\bin'
if Config.loaded:
pass
else:
print 'Load'
Config.set_library_path(libclangPath)
(4)参考文章:http://eli.thegreenplace.net/2011/07/03/parsing-c-in-python-with-clang/
核心来讲,libclang是个共享库,其接口能力集中在 clang/include/clang-c/Index.h,libclang附带了Python绑定,它位于clang/bindings/python中,位于模块clang.cindex中。该模块依赖于ctypes来加载动态libclang库,并尝试使用Pythonic API尽可能多地包装libclang
利用Clang(Python接口)来解析C++的更多相关文章
- Caffe学习系列(13):数据可视化环境(python接口)配置
caffe程序是由c++语言写的,本身是不带数据可视化功能的.只能借助其它的库或接口,如opencv, python或matlab.大部分人使用python接口来进行可视化,因为python出了个比较 ...
- Python之XML解析详解
什么是XML? XML 指可扩展标记语言(eXtensible Markup Language). XML 被设计用来传输和存储数据. XML是一套定义语义标记的规则,这些标记将文档分成许多部件并对这 ...
- caffe(13) 数据可视化(python接口)配置
caffe程序是由c++语言写的,本身是不带数据可视化功能的.只能借助其它的库或接口,如opencv, python或matlab.大部分人使用python接口来进行可视化,因为python出了个比较 ...
- Caffe学习系列(11):数据可视化环境(python接口)配置
参考:http://www.cnblogs.com/denny402/p/5088399.html 这节配置python接口遇到了不少坑. 1.我是利用anaconda来配置python环境,在将ca ...
- python中html解析-Beautiful Soup
1. Beautiful Soup的简介 简单来说,Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据.官方解释如下: Beautiful Soup提供一些简单的.pyt ...
- python接口自动化(十)--post请求四种传送正文方式(详解)
简介 post请求我在python接口自动化(八)--发送post请求的接口(详解)已经讲过一部分了,主要是发送一些较长的数据,还有就是数据比较安全等.我们要知道post请求四种传送正文方式首先需要先 ...
- Windows7 64下搭建Caffe+python接口环境
参考链接: http://www.cnblogs.com/yixuan-xu/p/5858595.html http://www.cnblogs.com/zf-blog/p/6139044.html ...
- python接口自动化28-requests-html爬虫框架
前言 requests库的好,只有用过的人才知道,最近这个库的作者又出了一个好用的爬虫框架requests-html.之前解析html页面用过了lxml和bs4, requests-html集成了一些 ...
- 利用阿里大于接口发短信(Delphi版)
阿里大于是阿里通信旗下产品,融合了三大运营商的通信能力,提供包括短信.语音.流量直充.私密专线.店铺手机号等个性化服务.每条四分五,价钱还算公道,经老农测试,响应速度非常快,基本上是秒到.官方文档提供 ...
随机推荐
- Graphics Class
System.Drawing 封装一个 GDI+ 绘图图面. 此类不能被继承. https://docs.microsoft.com/zh-cn/dotnet/api/system.drawing.g ...
- html页面原生video标签隐藏下载按钮
在写web项目的时候,遇到简介页面有一个单独的简介视频,只有这一个短短的视频所以没有使用任何video组件,所以运用原生video标签就想解决问题. 虽然简介视频是非付费的,但也不希望会有下载按钮或者 ...
- 如何生成SSH key及查看SSH key
只适用于Mac和windows下的Git Bash操作界面. 一.检查本地是否有SSH Key存在 在终端输入 ls -al ~/.ssh 如果终端输出的是: No such file or dire ...
- 将lvm逻辑卷分出一部分
今天公司磁盘报警,查看磁盘发现挂载的/aa空间还很多,而/ee 空间不足,现将/aa上的lvm分出一部分空间.加到/ee上 注:首先要 df -T -h 开一下磁盘格式如果是xfs格式的lvm ...
- 20165228《网络对抗技术》Exp0 Kali安装 Week1
2018-2019-2 <网络对抗技术>Exp0 Kali安装 Week1 Kali下载:来自官网 Kali安装 参考自kali安装教程 (因为写博客时已经安装好kali,所以这部分没有自 ...
- Docker CE安装
#添加账户docker useradd docker passwd docker (密码docker) #设置sudo权限 visudo root ALL=(ALL) ALL 后添加一行: docke ...
- python excel 读写
python操作Excel读写--使用xlrd xlwt python中使用xlrd.xlwt操作excel表格详解
- 开发Canvas 绘画应用(四):实现拖拽绘画
在开发Canvas绘画应用(三):实现对照绘画中,我们实现了视图引导的第一部分,这一篇我们来完成第二部分,即将图片直接拖到画布上进行绘画. ✁ 拖放如何实现? [拖放的基本概念]:创建一个绝对定位的元 ...
- Go语言切片
切片 Go 语言切片相当于是对数组的抽象. 由于Go 数组的长度不可改变,在特定场景中这样的集合就不太适用,Go中提供了一种灵活,功能强悍的内置类型切片("动态数组"),与数组相比 ...
- Django_ORM相关操作
一般的操作 1.all():查询所有的结果 2.filter():包含与所有筛选条件匹配的对象 3.get():返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果对象没有或者超过一个会报错 4 ...