在java中,我们可以使用javap disassembeler探索java类,方法。如何在c ++中做同样的事情?

时间:2017-05-14 12:35:40

标签: java c++ javap

我是这个社区的新手所以,如果我通过在错误的部分提出这个问题来侵犯我们社区的任何问题,那么我很抱歉。 我一直在寻找上述问题的答案很长一段时间,但没有一个结果是相关的。

  • 我只想知道在java中我们能够通过使用javap来探索java类方法,如何在c ++中做同样的事情???
  • 假设,我想在java中看到String类的所有方法,我会使用javap所有的方法,它们的返回类型,它们的参数数量和数量。显示他们的数据类型等。
  • 如何在c ++中做同样的事情???
  • 还有一个命令行方式来探索所有包&在java语言的特定包中有类???
  • 假设java** java.awt.*或任何此类方法来了解所有包裹&特定包中的类。

2 个答案:

答案 0 :(得分:1)

  

我只想知道在java中我们能够通过使用javap来探索java类方法,如何在c ++中做同样的事情???

你无法获得任何有用的东西。对于C ++程序集,您可以获得的最好的名称是错误的名称。 Java在.class文件中存储类的所有方法签名,因此可以引用和引用它们。但是C ++编译为程序集,并且可以处理内存地址和堆栈以及其他较低级别的内容。

  

假设,我想在java中看到String类的所有方法,我会使用javap所有的方法,它们的返回类型,它们的参数数量和数量。显示他们的数据类型等。   如何在c ++中做同样的事情

或者您可以阅读该库的文档。您可以对C ++库执行相同的操作:阅读文档。这就是它的用途。或者阅读库的标题,因为每个C ++库都有这些。

  

还有一种命令行方式来探索所有包&在java语言的特定包中有类???

对于Java,您之前提到过javap。你去了:))

对于C ++,这实际上取决于您正在使用的编译器工具链。例如,Microsoft Visual C ++具有dumpbin CLI工具,可以提供大量信息。但同样,您只能获得受损的名称,这可能会也可能不会反映程序使用的名称空间和类的结构。

  

假设java ** java.awt。*或任何此类方法来了解所有包&特定包中的类。

...

大部分信息(方法,类,名称空间(或Java中的包))都可以从相关库的任何文档中学习。如果你想要源代码,那么你可以免费获得它(对于开源项目),从库供应商那里购买它(用于闭源项目),或者只是使用文档。

答案 1 :(得分:0)

您的主要问题是可执行文件(c ++程序的输出),您可以找到成员,函数等。

在C ++中是不可能的。

C ++可执行文件包含本机汇编代码 在Java中,类文件实际包含字节代码。