В чем разница между файлами .LIB и .OBJ? (Visual Studio C ++)

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

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

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

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