C库导出什么函数?
What functions does a C library export?
如果我在Windows, Linux或Mac中使用C或c++库,是否有任何方法可以知道它导出的函数和数据结构及其签名而无需该库的文档?
可以明确列出链接器使用的符号名称。对于c++,这是一个完整的(扭曲的)签名。对于C(也适用于c++中的extern "C"
),它通常只是简单的名称(有时是参数的总大小,但没有类型,每个参数的大小,甚至参数的数量)。
在Unix系统上,您想要的工具是nm
(或objdump
,它还可以显示没有链接的符号)。在Windows上,DUMPBIN /EXPORTS
.
如果试图检查静态库,您可能必须首先提取它们(Unix上的ar
, Windows上的lib.exe
),然后在单个成员(目标文件)上调用nm
或dumpbin
。
有关获取c++签名的详细信息,请参阅相关问题:查找与c++ dll's方法相匹配的参数
调试信息也可以提供访问C链接签名,因为它们不存储在符号表中。
相关文章:
- 什么时候调用组成单元对象的析构函数
- 当在同一名称空间中有两个具有相同签名的函数时,会发生什么
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- 什么时候调用析构函数
- 在两台机器之间进行时间戳的最佳c++chrono函数是什么
- 用常见虚拟函数实现的任意组合来实现派生类的正确方法是什么
- 是什么原因导致它无法编译?它是声明签名还是在函数本身的实现中
- 我可以在这里替换什么,因为我不能在 C# 中使用隐式变量的 lambda 函数?
- 是什么让放置新调用对象的构造函数?
- 重载运算符的范围是什么?它是否会影响作为类成员的集合的插入函数?
- 如果我真的真的想从 STL 容器继承,并且我继承构造函数并删除新运算符,会发生什么?
- 函数名称表示什么等等
- 在函数中拥有函数原型的目的是什么?
- 使用基类指针调用基类的值构造函数的语法是什么?
- 什么是自定义比较器以及如何在 C++ 的排序函数中使用它?
- C++:使用方法调用析构函数的顺序是什么?
- 将此布尔值传递给此函数的最有效方法是什么?
- lambda函数什么时候对C++中的类有用
- 函数什么时候必须在c++中返回引用
- 如果void类型函数什么都不返回会发生什么