我正在尋找一種方法來列出使用ctypes包裝器加載到python程序上的C共享對象上.text節定義的符號。換句話說,我試圖獲取CDLL加載對象上已定義函數的列表。C/Python ctypes共享對象自省庫/技術
如果沒有辦法用ctypes或庫(或python綁定)來做到這一點,另一個選項是Python精靈解析庫或像http://halflifelibrary.com/wiki/Metamod-P這樣的解決方案。
任何方式來做到這一點?
我正在尋找一種方法來列出使用ctypes包裝器加載到python程序上的C共享對象上.text節定義的符號。換句話說,我試圖獲取CDLL加載對象上已定義函數的列表。C/Python ctypes共享對象自省庫/技術
如果沒有辦法用ctypes或庫(或python綁定)來做到這一點,另一個選項是Python精靈解析庫或像http://halflifelibrary.com/wiki/Metamod-P這樣的解決方案。
任何方式來做到這一點?
FYI沒有辦法讓使用ctypes的加載的共享對象上定義的方法的列表,因爲有在物體結構沒有元信息。
如果您需要特定於平臺的對象解析器,則可以使用objdump例程在http://projects.scipy.org/numpy/wiki/MicrosoftToolchainSupport上查看文本部分的已定義函數引用。
我的選擇是使用ELF分析程序庫(如Hachoir或Pydevtools)編寫一個小的分析程序,以反思對象。
那麼'nm -D libxxx.so'如何工作? – est 2012-08-07 07:43:46
添加到您嘗試使用的方法列表中,以獲取由dll導出的函數列表。
有一個腳本:http://projects.scipy.org/numpy/wiki/MicrosoftToolchainSupport轉儲dll的符號表,解析它得到公共表並將表輸出到.def文件中。它也表示,如果dll被剝離,這可能不起作用。
我不確定在Python中是否有很好的ELF解析器。添加一些我發現的。
這很好,但腳本正在使用執行objdump的子進程模塊來獲取符號表。你知道一個庫或python擴展嗎? – 2010-10-14 18:46:34
可能的重複:http://stackoverflow.com/questions/2891493/list-exported-functions-from-dll-with-ctypes – Mark 2010-10-14 18:20:53
不,那個問題指向具體的ctypes解決方案我在找C共享對象自省庫/技術。 – 2010-10-14 18:24:49