Как .lib и .obj файлы касаются друг друга? Какова их цель? .lib является просто набором .obj файлов? Раз так .obj's затем хранится в .lib создание ненужного .obj's?
Обычно файлы .obj
относятся к объектным файлам . Это исходный файл в скомпилированном виде. Например, main.cpp
и foo.cpp
будут создавать main.obj
и foo.obj
.
Затем линкеры связывают их вместе, чтобы main.obj
мог достигать функций, определенных в foo.obj
, и наоборот. Компоновщик выведет ваш двоичный файл, который является .lib
(или .a
, или .exe
, или .dll '' и т. Д.).
В общем, да, двоичный вывод ( .lib
в вашем случае) представляет собой набор связанных файлов .obj
. После того, как вы закончите компиляцию и захотите использовать библиотеку, вам нужно только связать другие программы с .lib
. .obj
- это промежуточные файлы, которые не нужны после завершения связывания.
Это зависит. Если файл .lib - статическая библиотека, то она более или менее просто коллекция файлов .obj. Если вы делаете или используете DLL, то файл .lib - это просто библиотека импорта, информация о том, какие символы доступны в соответствующей DLL.
Да, файл .lib - это просто коллекция файлов .obj. Ничего не было сделано с содержанием файлов .obj, лучшая аналогия - это архив .zip. Да, вы можете удалить файлы .obj после создания .lib, поскольку .lib содержит verbatim копию файлов .obj.
Остерегайтесь, если вы используете .lib для распространения вашего продукта, вы, как правило, приходится создавать 4 из них. Debug VS Release Build и два аромата CRT (/ MT VS / MD).