2009-10-29 29 views
1

我目前正在試圖用python對DLL進行一些自省。我想自動創建一個基於DLL的圖形測試界面。使用python反思DLL

我可以很容易地加載我的DLL在python中,我打電話給一些函數。主要的問題是,如果我調用該對象的「目錄」,而不調用任何方法,我得在結果

>>> dir(myLib) 
['_FuncPtr', '__class__', '__delattr__', '__dict__', '__doc__', 
'__format__', '__getattr__', '__getattribute__', '__getitem__', '__hash__', '__i 
nit__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__s 
etattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_func_fl 
ags_', '_func_restype_', '_handle', '_name'] 

,當我手動調用一個函數(如「Read_Version」)我有作爲的結果DIR功能

>>> dir(myLib) 
['Read_Version', '_FuncPtr', '__class__', '__delattr__', '__dict__', '__doc__', 
'__format__', '__getattr__', '__getattribute__', '__getitem__', '__hash__', '__i 
nit__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__s 
etattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_func_fl 
ags_', '_func_restype_', '_handle', '_name'] 

看來只有在功能內省的工作,我已經呼籲,這是不是真正的「有用的」;)。

你有沒有其他的想法來獲取DLL中的函數? (在python當然)

我在Windows下使用python 2.6。

回答

2

據我所知,沒有簡單的方法來做到這一點。您必須使用一些外部工具(例如link /dump /exports)或使用PE/DLL分析程序(例如pefile)。

+0

感謝您的幫助。我會盡力在這方面進行調查 – 2009-10-30 10:25:39