将C ++函数名称打印到C而不进行装饰

时间:2018-06-05 18:51:29

标签: c++ c visual-studio function dll

我正在尝试构建DLL。我被告知首先使用

打印出函数名称
../debug>dumpbin /exports demo.dll

以下是我的C ++代码

extern "C" __declspec(dllexport) void __cdecl Foo() {
return;
}

以下是我的def文件

LIBRARY 
EXPORTS
Foo

我希望将函数名称打印为

ordinal hint RVA      name

      1    0 00011212 Foo = Foo

相反,我看到了:

ordinal hint RVA      name

      1    0 00011212 Foo = @ILT+525(Foo)

如何禁用修剪/装饰?

我已经看到了解决方案在链接器中禁用“调试信息”的问题。我不想那样做。我是C ++的新手,所以不是超级知识。任何帮助,将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:4)

此处没有C ++名称更改。从DLL导出的函数称为Foo

@ILT语法是指增量链接中使用的间接调用形式(ILT代表“增量链接表”,数字标识该表中的插槽):

https://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/6cd9936a-c516-49e0-ba38-ed391669a69a/disassembly-operand-ilt?forum=vcgeneral