Почему невозможно неявно связать с .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 не может сделать это за нас?
Существуют ли (возможно, исторические) причины, по которым были предприняты эти дополнительные усилия по управлению версиями? -Вы уже должны поддерживать заголовок, который определяет символы, которые вы хотите использовать.
Был бы очень признателен, если бы кто-нибудь мог мне это объяснить, поскольку эти вопросы поражают меня.