在dll中找不到装饰的函数名

时间:2014-07-18 12:32:48

标签: c++ visual-studio-2013 x86 .net-assembly dumpbin

我在Visual Studio 2013中创建了一个dll项目

enter image description here

编译完成后,我运行

dumpbin /symbols DLLTest.dll

通过dll所在目录中的cmd.exe,但我只得到摘要

enter image description here

我跑了

 dumpbin /all DLLTest.dll 

(使用文本输出选项)但我在输出中找不到装饰的函数名称(我搜索了intgetSomeNum,它们应该是decorated name的一部分输出转储)。

我也试图在VS2013中找到一种方法将/ FAs输入到编译器选项中,但我无法在项目的C / C ++属性页中找到编译器选项。

我很感激任何帮助来识别装饰的函数名称。

编辑:感谢指针Jester。我修改了原始代码

enter image description here

但是,重新编译后 bumpbin仍未显示任何装饰名称(使用/ symbols选项)。

1 个答案:

答案 0 :(得分:3)

试试dumpbin /exports DLLTest.dll。我试过自己:

> type dlltest.cpp
#include <windows.h>

BOOL WINAPI DllMain(HINSTANCE hInst, DWORD fdwReason, LPVOID lpvReserved)
{
    switch (fdwReason)
    {
    case DLL_PROCESS_ATTACH:
    case DLL_PROCESS_DETACH:
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
        break;
    }
    return TRUE;
}

__declspec(dllexport) int getSomeNum(int a);
__declspec(dllexport) int getSomeNum2();

__declspec(dllexport) int getSomeNum(int a)
{
    return 2 * a;
}

__declspec(dllexport) int getSomeNum2()
{
    return 5;
}
> cl /LD dlltest.cpp
dlltest.cpp
Microsoft (R) Incremental Linker Version 12.00.30501.0
Copyright (C) Microsoft Corporation.  All rights reserved.

/out:dlltest.dll 
/dll 
/implib:dlltest.lib 
dlltest.obj 
   dlltest.lib 라이브러리 및 dlltest.exp 개체를 생성하고 있습니다.
> dumpbin /exports dlltest.dll
Microsoft (R) COFF/PE Dumper Version 12.00.30501.0
Copyright (C) Microsoft Corporation.  All rights reserved.


Dump of file dlltest.dll

File Type: DLL

  Section contains the following exports for dlltest.dll

    00000000 characteristics
    53C91AAE time date stamp Fri Jul 18 22:01:34 2014
        0.00 version
           1 ordinal base
           2 number of functions
           2 number of names

    ordinal hint RVA      name

          1    0 00001030 ?getSomeNum2@@YAHXZ
          2    1 00001020 ?getSomeNum@@YAHH@Z

  Summary

        3000 .data
        5000 .rdata
        1000 .reloc
        B000 .text