未修改的Microsoft Symbol:SomeClass ::`vftable'{for`Foo :: Bar'}

时间:2013-02-21 14:21:26

标签: windows symbols dbghelp

我正在使用dbghelp中的UnDecorateSymbolNameW来取消装饰Microsoft符号名称。使用UNDNAME_COMPLETE取消标记时,符号名称有时可以包含一些编译器附加信息。例如,vftable符号有时可以包含一个大括号块,其中包含一个for关键字,后跟一个类/接口名称,例如

  

SomeClass ::'vftable'{代表'Foo :: Bar'}

有人可以告诉我这个名字的"{for 'Foo::Bar'}"部分是什么意思吗?

此外,有人知道有关此的一些文档,所以我可以阅读,因为我找不到任何东西。

非常感谢!

1 个答案:

答案 0 :(得分:2)

您的类SomeClass使用多重继承,它有多个带虚拟方法的基类。因此,SomeClass需要多个vtable(每个基类一个虚拟方法)。 {for 'Foo::Bar'}告诉你你有哪个vtable。在这种情况下,它是Foo::Bar基类的vtable。

(这应该从名称中不言而喻。)