【发布时间】:2014-08-02 16:47:08
【问题描述】:
如果我在 Windows、Linux 或 Mac 中使用 C 或 C++ 库,是否有任何方法可以知道它导出的函数和数据结构及其签名,而无需此库的文档?
【问题讨论】:
-
“出口”是什么意思?链接器可见的符号或标头中声明的标识符?
-
那种取决于。如果你有它的标题(例如),它将告诉你函数和结构(但不一定是关于如何使用它们)。如果您只有正确的库(.lib、.a、.so 等),那么您通常可以获得相当多的 C++ 信息(基于名称修饰),但对于 C 来说则更少(因为它通常不会使用名称修饰)。
-
考虑到链接器可以检查它,答案在逻辑上必须是“是”(尽管不一定是有关数据结构的完整信息)。这是微不足道的逻辑。您是在询问具体的方法吗?在这种情况下,请提供各种库和特定工具链的详细信息。
-
有一些工具可以检查
.dll导出的内容,是的。例如,您可能需要检查Dependency Walker tool。 -
@Jongware:这个问题似乎也包括静态库。
标签: c++ c dll shared-libraries