В чем разница между файлами .LIB и .OBJ? (Visual Studio C ++) - PullRequest
25 голосов
/ 01 сентября 2009

Я знаю, что .OBJ - это результат компиляции единицы компиляции, а .LIB - статическая библиотека, которая может быть создана из нескольких .OBJ, но эта разница, похоже, заключается только в количестве единиц компиляции. Есть ли другая разница? Это тот же или другой формат файла?

Я пришел к этому вопросу, задаваясь вопросом, объединяется ли одна и та же статическая переменная, определенная в двух (или более) .LIB, во время компоновки в конечный исполняемый файл. Для .OBJs переменные объединяются. Но то же самое в .LIBs?

Ответы [ 2 ]

38 голосов
/ 01 сентября 2009

Файл .LIB представляет собой набор файлов .OBJ, объединенных вместе с индексом. Не должно быть никакой разницы в том, как обрабатывает компоновщик.

5 голосов
/ 26 августа 2010

Кажется, что файл .lib похож на коллекцию файлов .obj. Некоторые люди также рассматривают процесс, который переключает несколько файлов .obj на .lib, как Архив. В этом случае файл .lib представляет собой блок файла .obj, который может обрабатываться компоновщиком одинаково.

...