在 Raymond Chen 的一个帖子中,他似乎可以从修饰名称中知道函数的未修饰名称。我不知道他怎么能这样做。
以这个装饰的名字,
?GetName@PushButton@UILibrary@@UAEPB_WPAPAVStringHolder@2@@Z
每个组件是什么意思?
在 Raymond Chen 的一个帖子中,他似乎可以从修饰名称中知道函数的未修饰名称。我不知道他怎么能这样做。
以这个装饰的名字,
?GetName@PushButton@UILibrary@@UAEPB_WPAPAVStringHolder@2@@Z
每个组件是什么意思?
为了避免猜测,并且仍然没有真正使用工具,该UnDecorateSymbolName
功能可能有用。我希望能给出一个权威的正确答案。
基本大纲是_name@scope@scope@@parameters@something@@something
。我怀疑最后两部分是堆栈大小和调用约定或类似的,但文档可能有更多细节。
Microsoft Visual Studio 附带一个 undname.exe 工具。
http://msdn.microsoft.com/en-us/library/ms937379.aspx
如果您在默认位置有 MS VS,您可以使用:
"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\undname.exe" ?GetName@PushButton@UILibrary@@UAEPB_WPAPAVStringHolder@2@@Z
Microsoft (R) C++ 名称 Undecorator 版权所有 (C) Microsoft Corporation。版权所有。
取消装饰:-“?GetName@PushButton@UILibrary@@UAEPB_WPAPAVStringHolder@2@@Z”是:-“public: virtual wchar_t const * __thiscall UILibrary::PushButton::GetName(class UILibrary::StringHolder * *)”