8
votes

Quelle est la relation de .lib et .obj les uns des autres et mon projet en C ++?

Comment les fichiers de .lib et .obj se rapportent-ils les uns aux autres? Quel est leur but? Est un .lib juste une collection de fichiers .OBJ? Si c'est le cas, les .obj sont ensuite stockés à l'intérieur du .Lib rendant le .obj inutile?


0 commentaires

3 Réponses :


12
votes

typiquement, les fichiers .Obj se réfèrent à fichiers d'objet . Ceci est un fichier source sous sa forme compilée. Par exemple, un main.cpp et foo.cpp produirait main.obj et foo.obj . < / p>

C'est alors le travail des liaisons pour les relier, de sorte que main.Obj peut atteindre des fonctions définies dans foo.obj et vice-versa. La liaison émettra votre fichier binaire, qui est le .lib (ou .a ou .exe ou .dll```, etc. ).

Donc, dans un sens lâche, oui, la sortie binaire ( .lib dans votre cas) est la collection de fichiers liés .OBJ . Une fois que vous avez terminé la compilation et que vous souhaitez utiliser la bibliothèque, vous n'avez besoin que d'autres programmes de lien avec le .lib . Le .obj sont les fichiers intermédiaires considérés et ne sont pas nécessaires après la réalisation de la liaison.


0 commentaires

2
votes

Cela dépend. Si le fichier .lib est une bibliothèque statique, il est plus ou moins juste une collection de fichiers .OBJ. Si vous faites ou utilisez une DLL, le fichier .Lib n'est qu'une bibliothèque d'importation, avec des informations sur les symboles disponibles dans la DLL correspondante.


0 commentaires

1
votes

Oui, un fichier .lib est simplement une collection de fichiers .OBJ. Rien n'a été fait avec le contenu des fichiers .OBJ, la meilleure analogie est une archive .zip. Oui, vous pouvez supprimer les fichiers .OBJ après la création de la .lib car le fichier .Lib contient une copie verbatim des fichiers .OBJ.

méfiez-vous que si vous utilisez un .Lib pour distribuer votre produit, vous devez généralement en créer 4 d'entre eux. Débogou vs libération de la construction et les deux arômes de CRT (/ mt vs / md).


0 commentaires