我正在查看RTTI的文档,其中说:
如果启用了RTTI生成,则生成的二进制文件包含特殊元数据,其中包含有关类型的信息(例如,类祖先,声明的字段,带注释的属性)。
PETI文件中存储的RTTI元数据在哪里,它具有什么结构?
答案 0 :(得分:0)
Windows PE文件没有存储RTTI的标准部分,其格式和存储位置完全取决于编译器供应商。
即使它没有指定存储格式(只有内存布局),Itanium C++ ABI specification也是一个很好的起点,如果你想了解更多,可以转到GCC源代码。 This answer显示GCC v3 +在除Windows之外的任何地方都使用此ABI,而我猜测它们会尝试遵循Microsoft格式。
具体情况无关紧要,因为编译器可以随时自由更改其实现,如果要与其RTTI数据进行交互,则必须调查特定版本。
对于Delphi特定信息,可能值得查看Free Pascal code,但我不知道它们是否完全兼容ABI。