如果我在Windows,Linux或Mac中使用C或C ++库,有没有办法知道它导出的函数和数据结构及其签名而没有此库的文档?
答案 0 :(得分:6)
您绝对可以列出链接器使用的符号名称。对于C ++,这是一个完整的(受损)签名。对于C(也适用于C ++中的extern "C"
),它通常只是简单的名称(有时是参数的总大小,但没有类型,每个的大小,甚至参数的数量)。
在Unix系统上,您需要的工具是nm
(或objdump
,它可以另外显示没有链接的符号)。在Windows上,DUMPBIN /EXPORTS
。
如果尝试检查静态库,您可能必须先提取它们(在Unix上为ar
,在Windows上为lib.exe
)并在个人上调用nm
或dumpbin
成员(目标文件)。
有关获取C ++签名的详细信息,请参阅此相关问题:Finding arguments that go with methods in C++ dll's
调试信息还可以提供对C链接签名的访问,因为它们不存储在符号表中。