代码之家  ›  专栏  ›  技术社区  ›  Jorge Niedbalski R.

C/python CTypes共享对象自省库/技术

  •  2
  • Jorge Niedbalski R.  · 技术社区  · 14 年前

    我正在寻找一种列出的方法。文本部分定义了使用ctypes包装器加载在python程序上的C共享对象上的符号。换句话说,我正在尝试获取CDLL加载对象上定义函数的列表。

    如果用ctypes或library(或python绑定)无法做到这一点,另一个选项是python elf解析库或类似的解决方案 http://halflifelibrary.com/wiki/Metamod-P .

    有什么办法吗?

    2 回复  |  直到 10 年前
        1
  •  1
  •   pyfunc    14 年前

    添加到您试图用来获取由DLL导出的函数列表的方法列表中。

    脚本位于: http://projects.scipy.org/numpy/wiki/MicrosoftToolchainSupport 它转储DLL的符号表,解析它以获取公共表并将该表输出到.def文件中。它还表示,如果除去DLL,这可能不起作用。

    我不确定Python中是否有好的ELF解析器。加上一些我发现的。

        2
  •  0
  •   Jorge Niedbalski R.    14 年前

    仅供参考,无法获取使用ctypes加载的共享对象上定义的方法列表,因为对象结构上没有元信息。

    如果您需要一个特定于平台的对象解析器,也许您应该看看 http://projects.scipy.org/numpy/wiki/MicrosoftToolchainSupport 使用objdump例程在文本部分获取定义的函数引用。

    我的选择是使用ELF解析器库编写一个小的解析器,比如 Hachoir Pydevtools 为了反省对象。