使用ctypes列出dll导出的函数
有没有办法通过Python的外部函数库ctypes
来查看一个dll
文件里有哪些函数是可以被调用的?
如果可以的话,能不能知道这些导出函数的详细信息?
如果可以的话,能否提供一段代码示例?
8 个回答
8
一般来说,这是不可能的,因为动态加载的库通常不包含你需要的元信息。虽然在某些特殊情况下,可以通过特定系统的方法来获取这些信息,但ctypes
本身并不会获取这些信息。你可以通过ctypes
来记录这些信息(比如查看函数指针的restype和argtypes
属性),但前提是你需要通过其他方式先获取到这些信息。
22
我觉得ctypes这个库没有提供这个功能。在Windows系统上使用Visual Studio的话,可以这样做:
DUMPBIN -EXPORTS XXX.DLL
如果是在Windows上使用mingw的话,可以这样:
objdump -p XXX.dll
25
如果你在使用Linux系统,有一个很方便的工具叫做 nm
,它可以列出共享库里的内容(在Linux上总是有很多实用的工具,特别是针对C语言的)。
你可以用 -D
这个参数来使用它: nm -D ./libMyLib.so