Не удается найти оформленное имя функции в dll

Я создал проект dll в Visual Studio 2013.

введите здесь описание изображения

После компиляции запускаю

dumpbin /symbols DLLTest.dll

через cmd.exe в директорию где лежит dll, но получаю только сводку

введите здесь описание изображения

я побежал

 dumpbin /all DLLTest.dll 

(с опцией вывода текста), но мне не удалось найти в выходных данных имя оформленной функции (я искал int и getSomeNum, которые должны быть частью украшенное имя в выходном дампе).

Я также пытался найти в VS2013 способ ввести /FAs в параметры компилятора, но мне не удалось найти параметры компилятора на страницах свойств C/C++ проекта.

Я был бы признателен за любую помощь в определении имен украшенных функций.

РЕДАКТИРОВАТЬ: Спасибо за указатель, Шут. Я изменил исходный код

введите здесь описание изображения

Однако после перекомпиляции bumpbin по-прежнему не показывает оформленное имя (с параметром /symbols).


person Wuschelbeutel Kartoffelhuhn    schedule 18.07.2014    source источник
comment
Убедитесь, что ваши функции экспортированы.   -  person Jester    schedule 18.07.2014
comment
Я изменил свой пост: Dumpbin по-прежнему не показывает украшенное имя.   -  person Wuschelbeutel Kartoffelhuhn    schedule 18.07.2014


Ответы (1)


Попробуйте 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
person ikh    schedule 18.07.2014
comment
Правильно ли я предполагаю, что @ILT+170 — это украшенное имя, когда я вижу getSomeNum = @ILT+170(_getSomeNum) в выводе? - person Wuschelbeutel Kartoffelhuhn; 18.07.2014
comment
Исправлено: я изменил свойства проекта с Unicode на Multibyte code. - person Wuschelbeutel Kartoffelhuhn; 18.07.2014