我喜欢从 c++ dll 中获取代码,我知道我们很容易通过反射器从 .Net dll 中获取代码。c++ 中有没有可用的方法呢?
提前致谢
C++ 直接编译成机器码。.NET 中没有中间语言。您可以查看一些 C++ 反汇编程序。Hex-Rays 反编译器特别好。
我相信你在谈论非托管 C++。在这种情况下,这是不可能的。C++ 被编译成机器代码,而托管语言编译成中间语言,其中包含有关已编译代码的元数据。
简而言之,没有。任何“反射”都必须通过某种手工编码机制。
不,C++ 没有像 RedGate 的反射器那样的东西,也没有这种能力。反汇编程序不会接近您正在寻找的东西。
内省功能的代码可以从 Gcc-XML 的输出中生成,或者使用 OpenC++ 注入,但是 C++ 标准本身不需要为此提供任何特定的工具,并且没有任何工具/实用程序与任何流行的编译器捆绑在一起。C++ 程序也可以读取其自己的可执行文件中的调试信息,但它绝对不是特别便携、快速或不太可能成为一个健壮的解决方案。