IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Qt Creator Discussion :

Création de DLL avec Qt Creator 2.3.0


Sujet :

Qt Creator

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2011
    Messages : 19
    Par défaut Création de DLL avec Qt Creator 2.3.0
    Bonjour,

    Je voudrais savoir comment il faut procéder pour rendre certaines fonctions visibles depuis une DLL pour les partager et les appeler depuis l'extérieur.

    En recherchant sur Google, pour créer une DLL depuis Qt il faut changer le TEMPLATE passant de "app" à "lib" ou bien on créé un nouveau projet en allant dans "Nouveau projet", puis "Autre" et "Bibliothèque C++".

    J'ai donc créé une nouvelle bibliothèque C++ ayant comme nom de projet "test", la classe test.cpp a donc été créé avec son header. J'ai ajouté une fonction publique dans la classe Test dont la signature est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int Test::pub(int a,int b, int c, int d);
    Lors de la compilation, test.dll est généré mais la fonction pub n'est pas listée dans le logiciel DLL Export Viewer. De plus, il me demande un éxecutable mais je ne sais pas pourquoi il en faut un (peut-être qu'en général une DLL est toujours rattachée à un éxecutable ?):

    éxecutable introuvable, merci d'en spécifier un
    Si quelqu'un pourrait m'éclairer svp

    Merci d'avance !

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 054
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 054
    Billets dans le blog
    141
    Par défaut
    Bonjour,

    Comme vous l'a dit Google, il faut utiliser un template spécifique. Il est très simple de le faire en utilisant le gestionnaire de nouveau projet et en demandant la création d'un projet "Bibliothèque C++"

    QtCreator génèrera ses fichiers. Super. Il y en a un ou deux qui sont intéressant, tel le .h qui déclare des macros permettant l'exportation des fonctions de nos classes.

    Je vous conseille la lecture de cette page: http://qt.developpez.com/doc/latest/plugins-howto/
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre averti
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2011
    Messages : 19
    Par défaut
    Je viens de voir cette page mais je ne vois pas le rapport avec les dll, d'autant plus que je suis débutant en c++ (j'ai les bases).

    tel le .h qui déclare des macros permettant l'exportation des fonctions de nos classes.
    Ne sachant pas ce que sont les macros, j'ai lu cette page et j'ai des questions sur les fonctions suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Q_DECLARE_INTERFACE ( ClassName, Identifier )
    Q_EXPORT_PLUGIN2 ( PluginName, ClassName ) 
    Q_IMPORT_PLUGIN ( PluginName )
    A quoi correspond le PluginName et l'Identifier ?

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 054
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 054
    Billets dans le blog
    141
    Par défaut
    PluginName : le nom de votre plugin (ou DLL)
    Identifier : un nom d'identification.

    Sinon, il y a aussi ce cours : http://hiko-seijuro.developpez.com/a...que-dynamique/
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Membre averti
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2011
    Messages : 19
    Par défaut
    D'après ces liens, il existe plusieurs classes de base plugin, mais comment choisir la classe ? En fonction de quels paramètres ?

    http://qt.developpez.com/doc/4.7/plugins-howto/

    Je n'ai toujours pas compris la notion de macro, après avoir lu cette page http://qt.developpez.com/doc/latest/qtplugin.html

    L'exemple Plug & Paint est complexe, je ne m'y retrouve pas. Elle n'explique pas comment l'utiliser concrètement et je ne sais pas si ça s'éloigne de l'objectif car je ne vois plus le rapport.

    Pour le lien http://hiko-seijuro.developpez.com/a...que-dynamique/, c'est sous Linux et il n'y a pas la notion de QtPlugin ou macro, c'est une méthode différente on dirait. L'article ne m'aide pas beaucoup, c'est plutôt l'inverse.

  6. #6
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 054
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 054
    Billets dans le blog
    141
    Par défaut
    Citation Envoyé par johnVSsmith Voir le message
    D'après ces liens, il existe plusieurs classes de base plugin, mais comment choisir la classe ? En fonction de quels paramètres ?

    http://qt.developpez.com/doc/4.7/plugins-howto/

    Je n'ai toujours pas compris la notion de macro, après avoir lu cette page http://qt.developpez.com/doc/latest/qtplugin.html

    L'exemple Plug & Paint est complexe, je ne m'y retrouve pas. Elle n'explique pas comment l'utiliser concrètement et je ne sais pas si ça s'éloigne de l'objectif car je ne vois plus le rapport.

    Pour le lien http://hiko-seijuro.developpez.com/a...que-dynamique/, c'est sous Linux et il n'y a pas la notion de QtPlugin ou macro, c'est une méthode différente on dirait. L'article ne m'aide pas beaucoup, c'est plutôt l'inverse.
    Pour le lien, c'est un tutoriel généraliste pour le C++. Avec Qt c'est différent, car Qt est multiplateforme et donc, ajouter une surcouche au système de plugin.

    Pour le reste, tout est expliqué dans la page de documentation. Je ne peux faire guère mieux.
    Les deux classes à connaitre sont : QPluginLoader et QLibrary. Sur la page, les différences sont expliqués.

    Pour votre problème de base, c'est parce que vous n'avez pas fait l'exportation des symboles correctement (enfin, je pense).
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

Discussions similaires

  1. [WD14] Création de dll avec windev
    Par devalender dans le forum WinDev
    Réponses: 3
    Dernier message: 03/02/2012, 08h30
  2. Création de DLL avec C#
    Par Ekinx93 dans le forum Visual Studio
    Réponses: 1
    Dernier message: 19/06/2011, 23h12
  3. Réponses: 10
    Dernier message: 17/08/2009, 12h39
  4. [Kylix] Création de DLL pour se connecter
    Par aroundzefur dans le forum EDI
    Réponses: 1
    Dernier message: 16/03/2006, 09h58
  5. Problème création de DLL avec CString
    Par loupdeau dans le forum MFC
    Réponses: 3
    Dernier message: 21/07/2005, 20h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo