В чем разница между файлами .LIB и .OBJ?(Визуальная студия С++)
-
20-09-2019 - |
Вопрос
Я знаю, что .OBJ — это результат компиляции единицы компиляции, а .LIB — это статическая библиотека, которую можно создать из нескольких .OBJ, но эта разница, похоже, заключается только в количестве единиц компиляции.Есть ли еще разница?Это тот же или другой формат файла?
Я пришел к этому вопросу, когда задавался вопросом, объединяется ли одна и та же статическая переменная, определенная в двух (или более) .LIB, во время связывания с окончательным исполняемым файлом.Для .OBJ переменные объединяются.Но то же самое в .LIB?
Решение
Файл .LIB представляет собой набор файлов .OBJ, объединенных вместе с индексом.Не должно быть никакой разницы в том, как обрабатывает компоновщик.
Другие советы
Похоже, что файл .lib похож на набор файлов .obj.Некоторые люди также считают процесс переключения нескольких файлов .obj на файлы .lib архивом.В этом случае файл .lib представляет собой блок файла .obj, который компоновщик может обрабатывать одинаково.