C / Python ctypes共享对象内省库/技术

时间:2010-10-14 18:11:21

标签: python object ctypes shared

我一直在寻找一种方法,使用ctypes包装器在python程序上加载的C共享对象上列出.text节定义的符号。换句话说,我试图在CDLL加载的对象上获得已定义函数的列表。

如果无法使用ctypes或库(或python绑定)执行此操作,则另一个选项是python elf解析库或类似http://halflifelibrary.com/wiki/Metamod-P的解决方案。

有什么办法吗?

2 个答案:

答案 0 :(得分:1)

添加到您尝试使用的方法列表中,以获取由dll导出的函数列表。

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

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

答案 1 :(得分:0)

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

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

我的选择是使用ELF解析器库(如HachoirPydevtools)编写一个小解析器,以便内省对象。