C++命名重整:QBE_NXZ QAE_NXZ

C++ naming mangling : QBE_NXZ QAE_NXZ

本文关键字:NXZ QBE QAE C++      更新时间:2023-10-16

首先,这一切都是通过MS VS完成的。

程序崩溃"程序入口点?FunName@ClassName@@QAE_NXZ无法在动态链接库 XXX.dll 中找到"

我在依赖沃克中打开了XXX.dll,我能找到的只是

FunName@ClassName@@QBE_NXZ,不是FunName@ClassName@@QAE_NXZ。

我知道重建XXX.dll可以解决这个问题,但QBE_NXZ和QAE_NXZ有什么区别?

还有 c++ 名称重整是特定于编译器的吗?

您可以使用Visual Studio附带的undname.exe实用程序来取消名称。在这种情况下:

C:>undname "?FunName@ClassName@@QAE_NXZ"
Undecoration of :- "?FunName@ClassName@@QAE_NXZ"
is :- "public: bool __thiscall ClassName::FunName(void)"

C:>undname "?FunName@ClassName@@QBE_NXZ"
Undecoration of :- "?FunName@ClassName@@QBE_NXZ"
is :- "public: bool __thiscall ClassName::FunName(void)const "

因此,如您所见,区别在于成员函数是否const

名称重整是特定于编译器的。对于 GCC,您可以使用 c++filt 程序来解开名称。

相关文章:
  • 没有找到相关文章