如何从修饰名称中取消修饰名称
How to undecorate name from decorated name?
在Raymond Chen的帖子中,他似乎能够从修饰的名称中知道函数的未修饰名称。我不知道他怎么会这么做。
在这个装饰的名字中,
GetName@PushButton@UI库@@UAEPB_WPAPAVStringHolder@2@@Z
每个组件是什么意思?
为了避免猜测,并且仍然不真正使用工具,UnDecorateSymbolName
函数可能很有用。我希望这能给出一个权威的正确答案。
要手动执行此操作,此页面包含一些有关方案的信息,这些信息也是如此。
基本轮廓是_name@scope@scope@@parameters@something@@something
。我怀疑最后两部分是堆栈大小和调用约定或类似内容,但文档可能有更多细节。
名称篡改依赖于编译器。
在您链接的文章中,Raymond使用MSutil(undname)来删除损坏。
下面的表格显示了常见的编译器是如何崩溃的。
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@UI库@@UAEPB_WPAPAVStringHolder@2@@Z
Microsoft(R)C++名称取消装饰器版权所有(C)Microsoft Corporation。保留所有权利。
取消装饰:-";?GetName@PushButton@UI库@@UAEPB_WPAPAVStringHolder@2@@Z";是:-";public:virtual wchar_t const*__thiscall UILibrary::PushButton::GetName(类UILibrary::StringHolder**)"
- 挂起和取消挂起一个文件DLL
- 如何取消对nullptr的屏蔽,返回正确的对象
- C++取消引用指针.为什么会发生变化
- 使用取消引用的指针的多态性会产生意外的结果.为什么?
- 取消引用运算符不能重载
- 在他自己的方法中,有可能将一个对象取消引用到另一个对象吗
- 如何在Qt中取消捕获字符串
- 如何使用 TStyleManager::UnRegisterStyle() 取消注册样式
- GLEW/GLUT:调用init并创建一个窗口后,取消初始化并重新初始化?
- C++ 关于指针取消引用的技术问题
- 没有取消引用/解包对象的标准方法?
- 列表 iter 不取消引用 使用列表进行插入排序
- C++宏定义和取消定义
- 在这个函数中是有缺陷的,因为取消引用 null 是无效的,所以我想更改代码
- 取消引用结束指针到数组类型的一个
- 取消引用向量时出现问题
- 提升 asio 并发计时器取消问题与链
- 取消引用指向整数的指针时获得不同的结果
- tbb::p arallel_for_each 在取消时未执行
- 在清除 istream 之前,我不应该需要取消获取它吗?