2010-10-14 62 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