Bienvenue sur le forum !

Si vous souhaitez rejoindre la communauté, cliquez sur l'un de ces boutons !

Qt 5 : 5.9.0 - Qt Creator : 4.3.0 - Qt Installer : 2.0.3 - JOM : 1.1.2 - Qt Build suite : 1.7.0 - VS Qt 5 : 2.0.0

Exemple de programmation modulaire (noyau / plugins)

Bonsoir à tous,
un petit projet qui ne fait pas grand chose hormis charger des plugins.
Attention fonctionne avec QT4 et mais pas avec QT5. Pour le moment, l'envie de tester QT5 me manque et je sais que ça ne compilera pas car une des modifications entre QT4 et QT5 concerne notamment les plugins. Le portage ne parait pas difficile du tout.
Voici le projet : plugins.zip

Tester sous Mac mais pas sous Windows et Linux. J'espère que les .pro fonctionneront. Je testerai demain et corrigerai si des problème existent.

Romain.

Réponses

  • Tout marche bien sous windows avec 4.8.4 ;)

    Pour Qt 5 en effet en plus du traditionnel

    greaterThan(QT_MAJOR_VERSION, 4)
    {
    QT += widgets
    }
    il y'a quelques modifs exposées ici :

    http://qt.gitorious.org/qt/qtbase/commit/963b4c1647299fd023ddbe7c4a25ac404e303c5d

    (je verrai plus tard pour les appliquer, je vais déjà comprendre l'archi Qt 4)

    Merci en tout cas :)
  • Bonjour,
    Voici l'exemple précédent mais qui fonctionne sous Qt4 et Qt5.

    plugins_qt4qt5.zip
  • @dergen : comment déplace-t-on le sujet ?
  • May 2013 modifié
    Voici une petite mise à jour plugins_20130526-1612.zip. Elle permet de unloader/reloader les plugins.
    La nécessité de cette modif est venue de ce post http://forum.qtfr.org/viewtopic.php?id=15864.
    L'utilité est de pouvoir décharger un plugin, le modifier, ensuite le recompiler, et enfin le recharger. Cela évite de relancer l'appli.

    EDIT : Attention, sous Linux et Mac, on peut recompiler les plugins sans les décharger, par contre il faut le décharger/recharger pour que les modifs soient actives.
    Sous windows, il faut décharger le plugins avant la compilation, sinon le linkage ne fonctionnera pas car le fichier est en cours d'utilisation.
  • babaOroms said:
    @dergen : comment déplace-t-on le sujet ?
    Dans les options de modérations...
  • Merci pour ses exemples, il m'ont était très utiles pour mon applications.

    Cela fait plusieurs jours que je me prenait la tête avec les plugins sous Qt5.
    J'ai regardé ton code source, et j'ai pu résoudre mon problème en 5 minutes !

    Merci bien.
  • @vaillant : Content d'avoir pu aider. ;)
  • Salut babaOroms !

    Bon, je sais, je suis un peu boulet (voire beaucoup :lol: ) mais je ne parviens pas à utiliser ton exemple...
    J'ai tout téléchargé, ouvert dans QtCreator, compilé... et il me dit : "Exécutable introuvable, merci d'en spécifier un."...

    J'ai foiré où, moi ? 8.(
  • Salut,
    Sur quel OS ?
  • je bosse sur Linux (Ubuntu dans sa dernière version pour être précis)...
  • Je regarde ça ce soir, après mon petit tour à la fête de la musique.
  • Ah m**** c'est donc ça le bordel dans ma rue ??? :o

    Je vais pitêt' délaisser mon ordi ce soir alors :rolleyes:

    Merci de ton aide en tous cas ;)
  • Un micro bug dans mon .pro.
    C'est corrigé ici : plugins_20130621-2244.zip
  • Hello !

    Bon je viens de tester... avant d'étudier ça ce week-end ;)

    Sinon, chez moi, il y avait encore un "nano"-bug : dans les .pro j'ai du retirer un "niveau de retour en arrière dans la hiérarchie des dossiers". Oui je sais ce n'est pas très clair, donc pour faire simple, j'ai transformer les :
    BUILD_PATH = ../../build
    en
    BUILD_PATH = ../build
    et ça compile nickel !
  • Vous auriez moins de problèmes en utilisant les variables QMAKE :

    genre (il y en a d'autres, voir la doc de qmake):

    BUILD_PATH = $$PWD
  • Salut,

    Vous auriez moins de problèmes en utilisant les variables QMAKE :

    genre (il y en a d'autres, voir la doc de qmake):

    BUILD_PATH = $$PWD
    il y a des chances, oui ;)
  • Les améliorations sur ton exemples tombent à pic ! Je vais bientôt avoir le temps de m'y intéresser :)
    Merci
  • Hello !

    J'ai un "petit" soucis avec mes premiers essais de plugin...
    Quand je compile, j'ai 4 fichiers créés : libfrkbrd.so, libfrkbrd.so.1, libfrkbrd.so.1.0, libfrkbrd.so.1.0.0... donc quand j'utilise le PluginLoader, j'ai 4 plugins...

    Pour ce qui est de la sélection, je peux me débrouiller (suffit de ne charger que les plugins dont l'extension est .so) mais pourquoi ai-je 4 fichier créés ?
  • Normalement, 3 sont des liens symboliques (vers le "*.1.0.0" je pense, à vérifier).
  • C'est bien ça.
  • ok, c'est bien ce que j'avais compris...

    mais pourquoi je crée une lib + 3 liens dans mon projet, alors quand dans le projet de babaOroms une seule lib est créée (et, de fait, pas de lien) ?
  • Honte sur moi...
    Je viens de me rendre compte que, dans les .pro de mes plugins, j'avais oublié la ligne :
    CONFIG += plugin
  • Salutation !

    baba pourrais tu faire un exemple d'attachement de plugin avec une application static ~Qt5.3 ? =)

    Je m'amuse comme un gosse avec ce que tu nous as donné jusqu'ici mais je n'arrive pas à attacher mon plugin dés que j'utilise mon compilateur static, c'est donc la frustration qui écrit ces lignes !

    Merci à toi ! =)
  • Salut,

    Il me faudra un moment pour tester ça, car je n'ai pas de compilation statique de Qt.
    Je lancerai la compilation demain.
Connectez-vous ou Inscrivez-vous pour répondre.