2010-10-14 37 views
2

我正在寻找一种方法来列出使用ctypes包装器加载到python程序上的C共享对象上.text节定义的符号。换句话说,我试图获取CDLL加载对象上已定义函数的列表。C/Python ctypes共享对象自省库/技术

如果没有办法用ctypes或库(或python绑定)来做到这一点,另一个选项是Python精灵解析库或像http://halflifelibrary.com/wiki/Metamod-P这样的解决方案。

任何方式来做到这一点?

+0

可能的重复:http://stackoverflow.com/questions/2891493/list-exported-functions-from-dll-with-ctypes – Mark 2010-10-14 18:20:53

+1

不,那个问题指向具体的ctypes解决方案我在找C共享对象自省库/技术。 – 2010-10-14 18:24:49

回答

0

FYI没有办法让使用ctypes的加载的共享对象上定义的方法的列表,因为有在物体结构没有元信息。

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

我的选择是使用ELF分析程序库(如HachoirPydevtools)编写一个小的分析程序,以反思对象。

+0

那么'nm -D libxxx.so'如何工作? – est 2012-08-07 07:43:46

1

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

有一个脚本:http://projects.scipy.org/numpy/wiki/MicrosoftToolchainSupport转储dll的符号表,解析它得到公共表并将表输出到.def文件中。它也表示,如果dll被剥离,这可能不起作用。

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

+0

这很好,但脚本正在使用执行objdump的子进程模块来获取符号表。你知道一个库或python扩展吗? – 2010-10-14 18:46:34