如果我在 Windows、Linux 或 Mac 中使用 C 或 C++ 库,有没有办法知道它导出哪些函数和数据结构及其签名,而无需该库的文档?
最佳答案
您绝对可以列出链接器使用的符号名称。对于 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 链接签名的访问,因为它们不存储在符号表中。
关于c++ - C 库导出哪些函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25097284/