c++ - C 库导出哪些函数?

标签 c++ c dll shared-libraries

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

最佳答案

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

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

如果尝试检查静态库,您可能必须先提取它们(Unix 上为 ar,Windows 上为 lib.exe)并调用 nmdumpbin关于各个成员(目标文件)。

有关获取 C++ 签名的详细信息,请参阅此相关问题:Finding arguments that go with methods in C++ dll's

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

关于c++ - C 库导出哪些函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25097284/

相关文章:

c++ - 为什么 (0 > v.size()-1) 对于空 vector 求值为 false?

c# - 为单个方法引用一个大 DLL

c++ - 引用与信息隐藏 C++

c++ - 读取文件并将其添加到文本框 : string conversion issue

为双向链表创建标题

c - 在另一台机器上编译时 gcc 中出现 undefined reference 错误

c# - 如何将指针从 C# 传递到 DLL 中的 native 函数?

c++ - 使用自动生成的 C 代码的大型 C++ dll 的性能损失

c# - 使用 UAC 部署 C# 应用程序

c - 为什么MTK只显示 'F'