Salut Je développe une application Qt qui utilise un plugin (bibliothèque dynamique) et je me demandais si je pouvais construire l'application et la bibliothèque dans un fichier (peut-être en utilisant la fonction QResource?)Existe-t-il un moyen de mettre en package une bibliothèque dynamique dans le binaire d'application?
Existe-t-il un moyen de mettre en package une bibliothèque dynamique dans le binaire d'application?
Répondre
Qt supports reliant les plugins de manière statique à votre application. Voir the documentation.
Vous utilisez la macro Q_IMPORT_PLUGIN()
dans votre code comme ceci:
#include <QApplication>
#include <QtPlugin>
Q_IMPORT_PLUGIN(qjpeg)
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
...
return app.exec();
}
Vous devez également la liste des plugins dans QTPLUGIN dans votre fichier .pro:
QTPLUGIN += qjpeg
Vous pouvez aussi avoir besoin de construire une version statique de Qt vous-même - pas sûr si les versions pré-construites contiennent des bibliothèques statiques (je n'utilise pas le code prédéfini).
Vous voulez une application comme "DLL to Lib" qui va convertir votre fichier DLL à une bibliothèque statique. Ensuite, vous lieriez avec le fichier .lib au lieu de la DLL et vous êtes tous ensemble. Vous pouvez télécharger un essai d'un produit ici:
Lorsque vous faites cela, assurez-vous de ne pas violer la licence de la bibliothèque. Si la bibliothèque n'est pas disponible en tant que bibliothèque statique, elle peut être sous la licence LGPL (ou même GPL). Un lien statique dans les deux cas violerait la licence, sauf si vous libérez votre logiciel également sous licence GPL.