14 votes

Comment ajouter une bibliothèque statique (.a) dans un programme C++ ?

Je veux savoir comment je peux utiliser une bibliothèque statique en C++ que j'ai créée, d'abord la lib :

// header: foo.h
int foo(int a);

.

// code: foo.cpp
#include foo.h
int foo(int a)
{
    return a+1;
}

alors je compile d'abord la bibliothèque :

  1. g++ foo.cpp
  2. ar rc libfoo.a foo.o

Maintenant, je veux utiliser ces bibliothèques dans un fichier, par exemple :

// prog.cpp
#include "foo.h"
int main()
{ 
    int i = foo(2);
    return i;
}

comment dois-je les compiler maintenant ? J'ai fait :

g++ -L. -lfoo prog.cpp

mais j'obtiens une erreur parce que la fonction foo ne serait pas trouvée

15voto

Vous voulez :

g++ -L.  prog.cpp -lfoo

Malheureusement, l'éditeur de liens ld est sensible à l'ordre des bibliothèques. Lorsqu'il essaie de satisfaire des symboles non définis dans prog.cpp, il ne regarde que les bibliothèques qui apparaissent APRÈS prog.cpp sur la ligne de commande.

Vous pouvez aussi simplement spécifier la bibliothèque (avec un chemin si nécessaire) sur la ligne de commande, et oublier l'option -L :

g++ prog.cpp libfoo.a

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