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 处读取该如何解决?

posted @   zjh6  阅读(44)  评论(0编辑  收藏  举报  
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示