C库导出哪些功能?

アレッ*_*ックス -2 c c++ dll shared-libraries

如果我在Windows,Linux或Mac中使用C或C++库,有没有办法知道它导出的函数和数据结构及其签名而没有此库的文档?

Ben*_*igt 6

您绝对可以列出链接器使用的符号名称.对于C++,这是一个完整的(受损)签名.对于C(也适用extern "C"于C++),它通常只是简单的名称(有时是参数的总大小,但没有类型,每个的大小,甚至参数的数量).

在Unix系统上,您想要的工具是nm(或者objdump,它可以另外显示没有链接的符号).在Windows上DUMPBIN /EXPORTS.

如果尝试检查静态库,则可能必须首先解压缩它们(ar在Unix上,lib.exe在Windows上)并调用nmdumpbin在单个成员(目标文件)上.

有关获取C++签名的详细信息,请参阅此相关问题:查找与C++ dll中的方法一起使用的参数

调试信息还可以提供对C链接签名的访问,因为它们不存储在符号表中.