2013-04-24 102 views
5

我已经共享库文件(libmylib.so),但自己也没有头文件(mylib.h)。生成的头文件(* .h)中对共享库文件(*。所以)

你知道一些方法/工具来生成共享库文件这个头文件?

+1

也许不切实际的,甚至是不可能的。你在哪里得到这个.so文件? – 2013-04-24 16:19:18

+0

我想用我的旧图书馆提供许多有用的功能。我很多年前就把这个库与源代码一起移除。现在我找到了这个文件,只想看看现有的方法。我可以恢复一些方法,可以打电话给他们,还记得名字了一些方法,但不记得的参数和结构秩序。当然,我可以使用反汇编,但首先我试图找到更简单的方法。 – dzav 2013-04-24 16:51:59

+1

你可能看一些回答这个问题:http://stackoverflow.com/q/711220/10077 – 2013-04-24 16:55:56

回答

2

这是一般是不可能的,因为.so文件不包含有关参数表的足够信息 - 特别是如果正在使用非标准类型(结构,例如)时,由于类型信息不是。所以部分文件。

即使只使用标准类型,参数列表也不是ELF符号表的一部分(请参阅http://refspecs.linuxbase.org/elf/elf.pdf 1-15ff。)。但是,如果库没有被剥离(=它包含调试信息),那么DWARF部分确实包含了关于参数列表的信息,详情请参阅How to extract function prototypes from an elf file?