2010-12-14 22 views
1

Une question de base que j'ai pendant mon other question est la suivante: Sans d'abord extraire les fichiers .lib à l'aide de la commande LIB.EXE, comment combiner tous les membres d'archive .obj pour former un fichier .lib monolithique plus grand? Si j'utilise les utilitaires LIB.EXE ou LINK.EXE, certains fichiers .obj sont omis, sans doute parce qu'il n'y a aucun symbole défini dans les fichiers .obj omis requis par un autre fichier .obj.Liaison de plusieurs fichiers .lib statiques dans un fichier .lib monolithique à l'aide de VS2008 SP1 sans extraire les fichiers .lib en premier

Sans télécharger et installer des logiciels non-Microsoft supplémentaires, et sans d'abord extraire tous les fichiers .obj, comment les combiner?

Répondre

1

Vous ne pouvez pas. Pensez à un fichier .lib static-link comme étant simplement un fichier zip ou un fichier tar contenant des fichiers objets.

Vous devrez donc savoir quel est le contenu de lib/list, puis extraire chaque objet (un par un, c'est la partie fastidieuse) en utilisant lib/extract, et une fois que vous avez tout prêt, vous Construisez votre nouveau fichier .lib.

Si vous êtes à l'aise avec un langage de script (Perl, Python, ...), il ne serait pas trop difficile d'automatiser cette corvée. Vous pouvez le faire avec des commandes batch (cherchez "for/F", vous en aurez besoin) si vous préférez.

+0

Merci tangobravomike. Je suis arrivé aux mêmes conclusions que vous. Dans un cas, j'ai scripté l'extraction et la ré-enchaînement de bibliothèques statiques de la manière que vous avez mentionnée ci-dessus, mais c'était un arrêt pour vérifier que cela fonctionne, et plus tard je vais supprimer la bibliothèque statique "monolithique" faire un lien direct avec les bibliothèques statiques subsidiaires dans le lien DSO final, car il me semble qu'il y a un peu moins de surcoûts de construction que "extraire puis relier" la librairie monolithique. :) – bgoodr