Il n'y a pas de phase d'édition des liens quand on crée une bibliothèque statique, d'ailleurs dans la configuration du projet on trouve 'Librarian' (lib.exe) et non 'Linker' (link.exe).
Il faut voir un .lib comme une sorte de collection de .obj, chaque .obj est mis dans le .lib créé par la bibliothèque statique du .vcproj auquel il appartient et le tout est assemblé tout à la fin lors de l'édition des liens de l'exécutable (ou de la bibliothèque dynamique).
Il faut donc fournir tous les .obj lors de l'édition des liens pour faire l'exécutable, en général on fournit tous les .lib mais ce n'est pas obligé.
En effet il est tout à fait possible de simplifier le nombre de .lib finaux que l'utilisateur devra manipuler. Il suffit de mettre mettre un ou plusieurs .lib "dans" un autre .lib en utilisant le procédé que j'ai décrit.
Si on regarde la ligne de commande générée on voit que le .lib est tout bêtement sur la ligne de commande au même titre que les .obj : lib.exe accepte les .obj et les .lib (cf.
http://msdn2.microsoft.com/en-us/lib...5t(VS.80).aspx dont
"The files can be COFF object files, 32-bit OMF object files, or existing COFF libraries.").
Partager