web-dev-qa-db-fra.com

Utiliser une bibliothèque statique dans Qt Creator

J'ai beaucoup de mal à trouver de la documentation qui explique clairement comment utiliser une bibliothèque statique dans Qt Creator.

J'ai créé et compilé ma bibliothèque statique à l'aide de Qt Creator (Nouveau => Projets\Bibliothèque C++ => Définir le type sur "Bibliothèque liée statiquement"). Il compile et crache un "fichier .a".

Le problème que je rencontre est lorsque j'essaie d'utiliser la bibliothèque. J'ai un autre projet qui aimerait l'utiliser (#include des fichiers dans la bibliothèque, etc.) mais je ne sais pas comment établir un lien avec la bibliothèque ou inclure des fichiers de la bibliothèque.

35
Dan O
LIBS += -L[path to lib] -l[name of lib]

Remarque! ce nom de fichier de lib: lib [nameOfLib] .a et vous devez passer uniquement la partie originale -l [nameOfLib]

35
Dewfy

Dans votre projet qui utilise la bibliothèque, faites en sorte que la variable LIBS pointe vers le chemin de votre bibliothèque.
Pour inclure des fichiers de la bibliothèque, ajoutez le dossier de la bibliothèque au INCLUDEEPATH puis faites une #inclusion régulière dans vos fichiers de code.

par exemple:

# the binary's .pro  
LIBS += c:/mylibs/math.lib
INCLUDEPATH += c:/mylibs

Modifié:
- L indique à qmake que le chemin est un répertoire dans lequel il peut rechercher des bibliothèques -l lui indique que le chemin est un fichier, mais prenez note de l'observation ci-dessous.

Depuis les documents de qmake:

Cette variable contient une liste de bibliothèques à lier au projet. Vous pouvez utiliser les drapeaux Unix -l (bibliothèque) et -L (chemin de bibliothèque) et qmake fera la bonne chose avec ces bibliothèques sous Windows (à savoir cela signifie passer le chemin complet de la bibliothèque à l'éditeur de liens). La seule limitation à cela est que la bibliothèque doit exister, pour que qmake trouve dans quel répertoire réside une bibliothèque -l.

Remarque: Sous Windows, la spécification des bibliothèques avec l'option -l, comme dans l'exemple ci-dessus, entraînera l'utilisation de la bibliothèque avec le numéro de version le plus élevé; par exemple, libmath2.lib pourrait potentiellement être utilisé à la place de libmathlib. Pour éviter cette ambiguïté, nous vous recommandons de spécifier explicitement la bibliothèque à utiliser en incluant le suffixe du nom de fichier .lib.

17
rpg

..du créateur du projet QT

  1. goto projectName.pro dans le menu de gauche
  2. type LIBS + =
  3. rightClick AddLibrary
15
Cavalieri Giovanni

La variante

 LIBS += -L[PATH_TO_LIB_DIR] -l[LIBNAME] 

ne fonctionne pas si vous avez à la fois _ libLIBNAME.a et dynamique libLIBNAME.so bibliothèques dans le même dossier PATH_TO_LIB_DIR.
Dans ce cas sur mon linux avec QMake v 3.0 le dynamique est lié par défaut.
Pour forcer la liaison avec statique celui que vous devez spécifier explicitement sans aucune option.

LIBS += PATH_TO_LIB_DIR/libLIBNAME.a
10
Temak

Est-ce

LIBS += -L"/some path" -l"somename.a"

ou

LIBS += -L/somepath -lsomename.a

ou

LIBS += -L/somepath -lsomename"

Cela devrait être aussi simple que possible, mais pour une raison quelconque, il est extrêmement difficile d'extraire un résultat de recherche car il y a tellement de visites de forums de personnes qui demandent de l'aide et j'ai suivi tous les conseils que je peux obtenir, mais aucune aide. ..

2
Know-One