Подтвердить что ты не робот

В чем разница между статической библиотекой и динамической

В языке C в чем разница между статическим библиотекарем и динамической библиотекой?

4b9b3361

Ответ 1

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

Во-первых, вам нужно знать, что такое библиотека. В принципе, библиотека представляет собой набор функций. Возможно, вы заметили, что мы используем функции, которые не определены в нашем коде или в этом конкретном файле. Чтобы иметь к ним доступ, мы включаем заголовочный файл, содержащий декларации этих функций. После компиляции существует процесс с именем linking, который связывает эти объявления функций с их определениями, которые находятся в другом файле. Результатом этого является фактический исполняемый файл.

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

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

Ответ 2

В окнах:

Статическая библиотека - это .lib файл, который будет связан внутри вашего исполняемого файла и не будет меняться со временем.

Динамическая библиотека - это DLL файл, связанный с вашим исполняемым файлом, и может меняться в зависимости от файла dll, который вы загружаете при его выполнении.