Почему компоновщик Microsoft изменяет оформленные экспортные имена? - PullRequest
0 голосов
/ 16 февраля 2020

Я пытаюсь создать прокси-dll, используя инструмент "wrappit", как рекомендовано здесь . Инструменты "wrappit" создают как. cpp правильно:

// ??0CFileFormat@@QAE@XZ
extern "C" __declspec(naked) void __stdcall __E__0__()
    {
    __asm
        {
        jmp p[0*4];
        }
    }

// ?GetSkipListingForSPlanner@EnvironVar@@SAKXZ
extern "C" __declspec(naked) void __stdcall __E__262__()
    {
    __asm
        {
        jmp p[262*4];
        }
    }

как сопровождающий файл .def:

EXPORTS
??0CFileFormat@@QAE@XZ=__E__0__ @1
?GetSkipListingForSPlanner@EnvironVar@@SAKXZ=__E__262__ @263

Но после того, как я собрал получившуюся библиотеку, все имена Экспортируемые функции во встроенной dll выглядят усеченными сразу после начала описания параметров. Так ??0CFileFormat@@QAE@XZ превращается в ??0CFileFormat, ?GetSkipListingForSPlanner@EnvironVar@@SAKXZ превращается в ?GetSkipListingForSPlanner@EnvironVar и так далее. В результате мой dll-прокси не загружается из-за отсутствия необходимого экспорта. Почему это происходит и что я должен сделать, чтобы это исправить?

...