Неявное связывание с .DLL без импорта .LIB - PullRequest
3 голосов
/ 05 августа 2020

Почему невозможно неявно связать с .DLL без предоставления соответствующего import .LIB?

Что находится внутри import .LIB, который компоновщик не может напрямую извлечь из .DLL во время время сборки?

Когда я использую dumpbin / EXPORTS в своей DLL, он распечатывает мне все, что необходимо для создания заглушек функций в двоичном файле, который связывается с DLL:

    ordinal hint RVA      name
      1    0 00001040 ?MyFunc@@YGKHPADAAK@Z = ?MyFunc@@YGKHPADAAK@Z (unsigned long __stdcall MyFunc(int,char *,unsigned long &))
  • Точка входа
  • Порядковый номер
  • Название функции
  • Подпись, вкл. Тип возвращаемого значения и аргументы

Здесь кто-то даже вручную создал файл import .lib самостоятельно, имея в своем распоряжении только .dll. Почему компилятор Microsoft не может сделать это за нас?

Существуют ли (возможно, исторические) причины, по которым были предприняты эти дополнительные усилия по управлению версиями? -Вы уже должны поддерживать заголовок, который определяет символы, которые вы хотите использовать.

Был бы очень признателен, если бы кто-нибудь мог мне это объяснить, поскольку эти вопросы поражают меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...