Inclure une dll à un projet Qt
-
wrote on 4 Apr 2020, 17:53 last edited by
Bonjour,
Je souhaites ajouter une librairie .dll à un projet Qt. Jusque là j'utilisais codeblocks, pour ajouter la librairie à mon projet il suffisait d'inclure le header (.h) et d'indiquer l'emplacement du fichier .dll au linker.
J'ai essayé d'ajouter la dll dans le .pro comme suit :
LIBS += MaLibrairie.dll
Le problème c'est qu'a la compilation on dirait que Qt renome les fonctions par exemple j'utilise la fonction GrannyGetFileInfo le compilateur indique "erreur : undefined reference to `_imp__GrannyGetFileInfo@4'".
Une idée pour obtenir le même comportement que sur Codeblocks ?
-
Bonjour et bienvenue sur devnet,
Ce ne sont pas les dlls qui sont utilisées pour cette partie là mais le fichier .lib.
Qt Creator propose un assistant pour ajouter des librairies au projet.
-
wrote on 4 Apr 2020, 19:06 last edited by
Effectivement ça marche merci ! Je n'ai pas bien compris la différence entre .dll et .lib ce n'est pas qu'une question de compilateur ?
-
Non, une dll est une libraire dynamic qui contient le code à exécuter réutilisable par plusieurs applications/librairies.
Le fichier .lib est soit un fichier d'importation soit une librairie statique.
Ceci est valable pour Visual Studio. Les choses sont un peu différentes pour MinGW.
Dans les deux cas, le nom de la librairie est utilisé pour le linker sans utilisation de l'extension.
-
wrote on 4 Apr 2020, 20:51 last edited by
Il est possible d'utiliser une dll avec Qt ? Dans le cas ou le .lib n'est pas disponible
-
Qt est un framework C++.
À quelle librairie faites-vous référence ? Avec quel compilateur a-t-elle été générée ?
-
wrote on 5 Apr 2020, 08:29 last edited by
Elle a été générée avec g++ ou gcc, j'arrive à la compiler avec le compilateur g++ de codeblocks, c'est pour ça que je m’étonne de ne pas pouvoir l'intégrer à Qt.
-
Quelle version de Qt avez-vous installée exactement ?
-
wrote on 5 Apr 2020, 17:27 last edited by
Qt creator : 4.11.2 et Qt : 5.14.2. Je compile mon projet avec le compilateur Qt 5.14.2 MinGW 32-bit
-
J'y pense, il manque "-l" pour dire au linker d'utiliser cette librairie. Ou est-elle située sur votre ordinateur ?
-
wrote on 6 Apr 2020, 19:28 last edited by
En définitive j'aimerais qu'elle soit stocké dans le dossier de l’exécutable (comme le reste des dll Qt). J'ai essayé d'ajouter un -lMaLibrairie.dll mais il m'indique qu'il ne trouve le fichier (y compris en le mettant dans le dossier de compilation). Il faut la mettre dans un endroit spécifique ?
-
Il faut indiquer au compilateur où trouver la librairie en utilisant l'argument -L.
6/12