libclang的管用的示例
#encoding=gbk
import sys
import clang.cindex
def find_typerefs(node, typename):
""" 找'类型名'的定义
"""
if node.kind.is_reference():
#ref_node = clang.cindex.Cursor_ref(node)#这一句有毛病
#上一句有毛病
ref_node = node.get_definition()
if ref_node.spelling == typename:
print('Found %s [line=%s, col=%s]'%(typename, node.location.line, node.location.column))
# Recurse for children of this node
for c in node.get_children():
find_typerefs(c, typename)
from clang.cindex import Config
Config.set_library_path('f:\path')
#这里设置路径,不是文件,在路径里面要有`libclang.dll`.写详细点,免得搞不定
index = clang.cindex.Index.create()
tu = index.parse(sys.argv[1])
print('翻译单元:', tu.spelling)
find_typerefs(tu.cursor, sys.argv[2])#几个参数#c.cpp见下面
#python ab.py c.cpp Person
#命令如上
用py
搞了好久,都搞不了,东一个问题,西一个问题.还要搞.有的东西不懂.
class Person {
};
class Room {
public:
void add_person(Person person)
{
// do stuff
}
private:
Person* people_in_room;
};
template <class T, int N>
class Bag<T, N> {
};
int main()
{
Person* p = new Person();
Bag<Person, 42> bagofpersons;
return 0;
}
这样就管用了,我还要加,别人的,到处都有问题.前面的py文件,我用cpp渲染的,还好看点
.
问题出现:libclang.dll : fatal error LNK1107: 文件无效或损坏: 无法在 0x2D8 处读取
该如何解决?
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现