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 Discussion :

[Qt4] Problème compilation plugins


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de guiyomh
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 328
    Par défaut [Qt4] Problème compilation plugins
    bonjour,
    voilà, j'essaye de faire un syteme de plugin avec QT. Je me suis basé sur des exemples de la doc officiel, mais j'ai des problème de compilation:
    g++ -c -pipe -O2 -Wall -W -D_REENTRANT -fPIC -DQT_NO_DEBUG -DQT_PLUGIN -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -Isrc -I../../src/coremanager -I../../src/mainInterface -I../../src/statusBar -I../../src/menuBar -I../../src/pluginManager -I../../build/moc -I../../build/ui -o ../../build/o/unix/FileExplorer.o src/FileExplorer.cpp
    rm -f libFileExplorer.so
    g++ -Wl,--no-undefined -shared -o libFileExplorer.so ../../build/o/unix/FileExplorer.o ../../build/o/unix/moc_FileExplorer.o -L/usr/lib -lQtGui -lQtCore -lpthread
    ../../build/o/unix/FileExplorer.o: In function `FileExplorer::FileExplorer()':
    FileExplorer.cpp.text+0x273): undefined reference to `GinnCore::mainWindow()'
    FileExplorer.cpp.text+0x2c1): undefined reference to `GinnCore::mainWindow()'
    ../../build/o/unix/FileExplorer.o: In function `FileExplorer::FileExplorer()':
    FileExplorer.cpp.text+0x823): undefined reference to `GinnCore::mainWindow()'
    FileExplorer.cpp.text+0x871): undefined reference to `GinnCore::mainWindow()'
    collect2: ld a retourné 1 code d'état d'exécution
    make: *** [../../bin/unix/plugins/libFileExplorer.so] Erreur 1
    Je vous explique ce que j'ai fais, J'ai créer une classe coreMannager, qui va être le coeur de mon application. C'est elle qui lance la mainWindow, la menuBar, la StatusBar ... et les plugins.

    Toutes les méthodes de cette classe sont static. Par Exemple j'ai une méthode GinnCore::mainWindow() qui me retourne le pointeur vers la fenêtre mainwindow.

    de là j'ai créer une classe de chargemet des plugins et une classe interface pour les plugins de laquelle hérite mes plugins (comme fais dans la doc).

    Je n'ai pas de problème de compilation de l'application, mais seulement du plugins.
    Je joins à ce message une archives de mon projet dès fois que quelqu'un est le courage de m'aider à débugger cette affaire.

    merci.

  2. #2
    Membre éclairé Avatar de guiyomh
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 328
    Par défaut
    Si ça peux aider, je mets le code source du plugin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    #ifndef FILEEXPLORER_H
    #define FILEEXPLORER_H
     
    #include "../../src/pluginManager/PluginManager.h"
    #include "../../src/pluginManager/PluginInterface.h"
     
    class FileExplorer : public QObject , public PluginInterface
    {
        Q_OBJECT
        Q_INTERFACES( PluginInterface )
     
        public:
           FileExplorer();
     
    };
    #endif //FILEEXPLORER_H
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    #include "FileExplorer.h"
     
    #include "../../src/coremanager/GinnCore.h"
    #include "../../src/mainInterface/UIMain.h"
    #include <QtGui>
    #include <QtCore>
     
    FileExplorer::FileExplorer()
    {
        // set plugin infos
        gPluginInfos.Caption = "Explorateur de fichier" ;
        gPluginInfos.Description = "Plugin pour parcourir l'arborescence de l'ordinateur" ;
        gPluginInfos.Author = "Guillaume Camus<toto@gmail.com>";
        gPluginInfos.Name = "FileExplorer";
        gPluginInfos.Version = "1.0.0";
     
        QDockWidget *dock = new QDockWidget(QString("FileExplorer"),GinnCore::mainWindow());
     
        GinnCore::mainWindow()->addDockWidget(Qt::LeftDockWidgetArea,dock);
    }
     
    Q_EXPORT_PLUGIN2( PluginInterface, FileExplorer )
    je rajoute également le .pro du plugin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    ######################################################################
    # Automatically generated by qmake (2.01a) ven. sept. 19 12:50:00 2008
    ######################################################################
     
    AUTHOR  = Guillaume Camus
    QT = gui core
    LANGUAGE = C++
    TEMPLATE = lib
    CONFIG       += release plugin
    INCLUDEPATH += . \
                src/ \
                ../../src/coremanager \
                ../../src/mainInterface \
                ../../src/statusBar \
                ../../src/menuBar \
                ../../src/pluginManager
     
    TARGET = FileExplorer
     
    win32:OBJECTS_DIR   += ../../build/o/win32
    unix:OBJECTS_DIR    += ../../build/o/unix
    mac:OBJECTS_DIR += ../../build/o/mac
     
    RCC_DIR = ../../build/rcc
    UI_DIR  = ../../build/ui
    MOC_DIR = ../../build/moc
     
    win32:DESTDIR = ../../bin/window/plugins/
    unix:DESTDIR = ../../bin/unix/plugins/
    mac:DESTDIR = ../../bin/mac/plugins/
     
    LICENSE = GPL
     
    # Input
    HEADERS += src/FileExplorer.h
     
    SOURCES += src/FileExplorer.cpp

  3. #3
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Normalement les variable static ne sont pas partagé entre le programme et une dll chargé (a vérifier)

    Ton problème est que le link ne trouve pas les instances de tes static.
    Tu as surement oublié les .o de GinnCore

  4. #4
    Membre éclairé Avatar de guiyomh
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 328
    Par défaut
    et comment je peux faire pour les inclures les .o de GinnCore ?
    y at'il quelque chose a motivier dans le .pro ?

    car que ce sois l'application ou le plugin j'ai regroupé tout les objet au meme endroit.
    win32:OBJECTS_DIR += ../../build/o/win32
    unix:OBJECTS_DIR += ../../build/o/unix
    mac:OBJECTS_DIR += ../../build/o/mac
    et dans le include path j'ai bine le chemin vers mon "GinnCore" =>../../src/coremanager.

    Quelle est la différence entre
    #include <GinnCore.h>
    et
    #include "../../src/coremanager/GinnCore.h" ?

  5. #5
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par guiyomh Voir le message
    et comment je peux faire pour les inclures les .o de GinnCore ?
    y at'il quelque chose a motivier dans le .pro ?
    il faut les .cpp dans le .pro




    Citation Envoyé par guiyomh Voir le message
    #include <GinnCore.h>
    et
    #include "../../src/coremanager/GinnCore.h" ?
    Pour la première, le compilot va d'abord chercher dans les répertoire de base
    Pour la deusième, le compilot va d'abord chercher dans le répertoire relatif

    Ou un truc comme cela. En gros c'est quasi pareil

  6. #6
    Membre éclairé Avatar de guiyomh
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 328
    Par défaut
    bon,
    j'ai ajouter dans le .pro de mon plugin, tous les .cpp et .h auquel je faisais référence dans GinnCore.

    Et je n'ai plus le problème de compilation.=> merci

    Quand je lance mon appli, j'ai ajouter un log, et il détecte bien le plugin. Et il a l'air de bien le charger sinon j'aurais tout un tas de log.

    mais je vois pas mon dock ! Aurais tu une idée de pourquoi ?

    En tou cas merci du coup de main.

Discussions similaires

  1. Problème compilation gwt-maven-plugin
    Par kadje84 dans le forum GWT et Vaadin
    Réponses: 14
    Dernier message: 02/01/2012, 16h03
  2. problème de plugin après compilation
    Par kohan95 dans le forum Forms
    Réponses: 15
    Dernier message: 13/02/2010, 01h30
  3. [Eclipse 3.0] Problème de plugins ??
    Par ch5oun dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 21/09/2004, 16h09
  4. [Plugin] Problème initialisation plugin ResourcesPlugin
    Par Michael I. dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 06/02/2004, 13h27
  5. [Kylix] problème compilation kylix3 avec redhat 9.0
    Par madininaoursa dans le forum EDI
    Réponses: 1
    Dernier message: 02/07/2003, 16h21

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