Почему Visual Studio создает .LIB вместе с .DLL?

У меня есть проект «Logger», в котором тип конфигурации .dll.

«Logger» использует «libconfig» (синтаксический анализатор с открытым исходным кодом). В настоящее время у меня есть отдельный проект для «libconfig» и его тип конфигурации .lib

Я добавил «libconfig» в настройки и ссылки Logger с помощью:

  • зависимости библиотеки ссылок = true
  • использовать входы зависимости библиотеки = false

В командной строке компоновщика Logger я вижу:
/ IMPLIB: «путь \ к \ Logger.lib»

Мой вопрос:
Зачем нужно создавать Logger.lib? я вижу
/ OUT = «путь \ к \ Logger.dll», но я пытаюсь освоить процесс сборки visual studio.

От M $ IMPLIB документ, Я вижу свою часть процесса LINK. Я до сих пор не понимаю.

Редактировать: я не упомянул, как использовать Logger DLL. Мое приложение будет загружать его во время выполнения (поскольку эта функциональность требуется только для определенных аргументов строки cmd)

9

Решение

DLL содержит код. Файл .lib содержит в основном заглушки для функций в файле, которые позволяют (и относительно быстро) компоновщику поместить правильную информацию в исполняемый файл для использования функций в DLL.

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

Возможно, сейчас это мало что значит, но в то время, когда Windows была новой, довольно много программ все еще распространялось на гибких дисках 360K, поэтому минимизация размера файла, который вы распространяли среди пользователей, считалась довольно важной.

12

Другие решения

EXE-файл, который использует ваш файл logger.dll, потребуется для ссылки на logger.lib. Без библиотеки exe не может быть построен. Библиотека содержит функции-заглушки, которые удовлетворяют вызовам, выполняемым исполняемым кодом. (Во время выполнения заглушки переводят вызовы в DLL.)

5

По вопросам рекламы [email protected]