Qual é a diferença entre arquivos .LIB e .OBJ?(Visual Studio C++)
-
20-09-2019 - |
Pergunta
Eu sei que .OBJ é o resultado da compilação de uma unidade de compilação e .LIB é uma biblioteca estática que pode ser criada a partir de vários .OBJ, mas essa diferença parece estar apenas no número de unidades de compilação.Existe alguma outra diferença?É o mesmo formato de arquivo ou diferente?
Cheguei a esta questão ao me perguntar se a mesma variável estática definida em dois (ou mais) .LIBs é mesclada ou não durante a vinculação ao executável final.Para .OBJs as variáveis são mescladas.Mas é o mesmo em .LIBs?
Solução
Um arquivo .LIB é uma coleção de arquivos .OBJ concatenados com um índice.Também não deve haver diferença na forma como o vinculador trata.
Outras dicas
Parece que o arquivo .lib é como uma coleção de arquivos .obj.Algumas pessoas também consideram o processo que alterna vários arquivos .obj para arquivos .lib, como Arquivo.Nesse caso, o arquivo .lib é uma caixa do arquivo .obj, que pode ser tratada igualmente pelo vinculador.