129 votes

Liaison de bibliothèques statiques avec d'autres bibliothèques statiques

J'ai un petit morceau de code qui dépend de nombreuses bibliothèques statiques (a_1-a_n). J'aimerais regrouper ce code dans une bibliothèque statique et le mettre à la disposition d'autres personnes.

Ma bibliothèque statique, appelons-la X, compile bien.

J'ai créé un exemple de programme simple qui utilise une fonction de X, mais lorsque j'essaie de le lier à X, je reçois de nombreuses erreurs concernant des symboles manquants dans les bibliothèques a_1 - a_n.

Existe-t-il un moyen de créer une nouvelle bibliothèque statique, Y, qui contient X et toutes les fonctionnalités nécessaires à X (bits sélectionnés de a_1 à a_n), afin de pouvoir distribuer uniquement Y pour que les gens puissent y lier leurs programmes ?


UPDATE :

J'ai envisagé de tout vider avec ar et faire une méga-lib, cependant, cela finit par inclure beaucoup de symboles qui ne sont pas nécessaires (tous les fichiers .o font environ 700 Mo, cependant, un exécutable lié statiquement fait 7 Mo). Existe-t-il un moyen efficace d'inclure uniquement ce qui est réellement nécessaire ?


Cela semble étroitement lié à Comment combiner plusieurs bibliothèques C/C++ en une seule ? .

5voto

evpo Points 1108

Alternativement à Link Library Dependencies dans les propriétés du projet, il existe une autre façon de lier les bibliothèques dans Visual Studio.

  1. Ouvrez le projet de la bibliothèque (X) que vous voulez combiner avec d'autres bibliothèques.
  2. Ajouter les autres bibliothèques que vous voulez combiner avec X (Clic droit, Add Existing Item... ).
  3. Allez dans leurs propriétés et assurez-vous que Item Type es Library

Ceci inclura les autres bibliothèques dans X comme si vous exécutez

lib /out:X.lib X.lib other1.lib other2.lib

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X