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 :

problème en mode release


Sujet :

Qt

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 43
    Points : 25
    Points
    25
    Par défaut problème en mode release
    Bonjour a tous,

    Voilà je rencontre un problème qui est pour l’instant a mon niveau incompréhensible. J’ai développé une application Qt qui utilise Qwt. Dans une de mes classes je déclare un Qwtplot. J’ai compilé l’ensemble en mode debug -> la tout fonctionne.
    Maintenant je dois compiler en mode release -> à la compilation pas d’erreur ni de warning. Mais lors de l’exécution du programme je rencontre l’erreur suivante :
    Debug error!
    Program : ...
    Module : 4.2.2
    File Global\qglobal.cpp
    line : 2001

    QWidget : must construct a qApplication before a QpaintDevice
    Je clique sur ignorer puis j’ai :
    Debug error!
    Program : ...
    Module : 4.2.2
    File Global\qglobal.cpp
    line : 2001

    QWidget : cannot create a Qwidget when no GUI is being used.
    De nouveau je clique sur ignorer :
    Debug error!
    Program : ...
    Module : 4.2.2
    File Global\qglobal.cpp
    line : 2001

    Assert : "uncreated widgets" in file kernel\qwidget.cpp, line 901
    Et finalement mon application plante :
    unhauled exeption at 0x0047db2c (QtGui4) in XXX.exe : 0xC0000005 : access violation reading location 0x00000000
    Il s’arrête dans le fichier Qhash.h à la ligne 239. Je pense (en faite pas sur du tout) que le pointeur qui pointe sur 0x00000000 est "This".

    Voilà il me dit de faire une Qapplication avant, pourquoi pas mais comment je l’intègre au code. Ce n’est pas fait quand il passe dans le constructeur ? Et dans la documentation de Qapplication, il parle de int argc et char **argv, que représente t’il ?
    De plus j’ai l’impression que c’est un problème de pointeur (selon la dernière erreur). Ou qu'il ne passe pas par le constructeur?
    Voilà si certain on des pistes pour corriger ses erreurs je suis preneur. Je mets en suite la partit du code qui semble posée problème :

    Appel de ma fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Maclasse **page_visu;
    page_visu=(Maclasse**) malloc(20*sizeof(MAclasse*));
    page_visu[i]= new page_visualisation1();
    page_visu[i]->creation_page(...);
    Puis ma fonction:
    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
       void page_visualisation1::creation_page()
    {
     
    ….
     
    dial2->ajout_chemin(nom_variable_visua,p);
    myPlot = new QwtPlot(nom_variable_visua);
     
    	//créé un layout et intègre les éléments 
    layout = new QHBoxLayout(this);
    layout->addWidget(myPlot);
     
    creer_menu();
    creer_courbe();
     
    myPlot->setMargin(2);
    QString titre_axe_x("Temps en seconde");
    myPlot->setAxisTitle(2,titre_axe_x);
     
    QString titre_axe_y("Valeur du modèle");
    myPlot->setAxisTitle(0,titre_axe_y);
     
    QColor couleur1 = QColor(190,240,240,50);
    myPlot->setCanvasBackground(couleur1);
     
     
    	//dimmenssionne et affiche la page
    resize(600,300);
    show();
     
    base_temps();
    }
    Dernière info : j'utilise visual studion 2005 SP1 avec Qt 4.2.2 et Qt intègration.

    Merci pour vos réponsses. Et bon week end de paque à tous.

  2. #2
    Membre expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Points : 3 266
    Points
    3 266
    Par défaut
    Salut,

    Le code que tu montres ne pose pas d'erreur. Il y aurait plutôt une variable déclaré/instancié avant main qui pose problème. Un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    QWidget w;
     
    int main(int argc, char **argv)
    {
        QApplication app(argc, argv);
    ...
    Alors bien sûr, ça peut être dans un autre fichier.
    Pour trouver, tu peux toujours tenter de mettre un breakpoint sur la première ligne de ton main (qui devrait être l'instanciation de QApplication par sécurité).

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 43
    Points : 25
    Points
    25
    Par défaut
    Bonjour, merci pour ta réponse, mais hélas je ne trouve toujours pas. Peu être ne suis pas douée voilà le code de mon main :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     #include <QtGui/QApplication>
    #include "polux_application.h"
    int main(int argc, char *argv[])
    {
    	QApplication a(argc, argv);
    	a.connect(&a, SIGNAL(lastWindowClosed()), &a, SLOT(quit()));
    	Polux_application p;
    	p.show();
    	return a.exec();
    }
    Il est très simple donc je pense pas que l’erreur soit la. Dans le constructeur de polux_application, j’instancie deux classes : Explorateur et dialogue (qui a priporis ne pose pas de problème). C’est à l’appelle de Maclasse (page_visualisation) que le bug se produit. Celle-ci est instancier dans polux application. Doit je recréé une Qapplication avant de l’appeler ?
    Surtout je me demande pourquoi sa fonctionne en mode débug et pas en mode release ??
    je vous remercie d'avance, vraiment beaucoup.

  4. #4
    Membre expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Points : 3 065
    Points
    3 065
    Par défaut
    ca doit un problème de pointeurs mal alloué. Mais avec le bout de code la je ne vois pas :s

  5. #5
    Membre expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Points : 3 266
    Points
    3 266
    Par défaut
    Désolé, j'ai lu un peu trop rapidement ton premier post:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Maclasse **page_visu;
    page_visu=(Maclasse**) malloc(20*sizeof(MAclasse*));
    Je doute que ça résolve le problème mais commence par utiliser new[], ce sera plus propre.

    Pour ce qui est de l'erreur, ce que je te donnais est une piste, pas forcément dans le main. Si dans polux.cpp, tu as (par exemple) en dehors de toute méthode un
    QPixmap Polux::machin(":/res/pixmap.png");
    Tu auras alors le même souci, à savoir l'initialisation d'une ressource alors qu'il n'y a pas de QApplication. Ceci dit... je vois pas pourquoi ça fonctionnerait en mode debug... Tu pourrais poster le code complet où tu alloues le tableau page_visu stp?

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 43
    Points : 25
    Points
    25
    Par défaut
    Bon voila maintenant j'utilise l'opérateur new[], mais cela ne résout pas mes problèmes…

    page_visu est sensée être un tableau de pointeur sur ma classe Page_visualisation1, qui est instancier plusieurs fois dans le programme. En effet cette classe est appelée avec des paramètres et j’ai besoin de connaître son adresse pour lui renvoyer les bonnes informations par la suite.

    Alors le plus simple, je vous envoie le code quasi complet, ainsi que le point h complet :

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    #ifndef POLUX_APPLICATION_H
    #define POLUX_APPLICATION_H
     
    #include <QtGui/QMainWindow>
    #include "ui_polux_application.h"
    #include "Explorateur.h"
    #include "Dialogue.h"
    #include "page_visualisation1.h"
    #include <QString>
    #include <QMessageBox>
     
    class Polux_application : public QMainWindow
    {
    	Q_OBJECT
     
    public:
    	//Constructeur
    	Polux_application(QWidget *parent = 0, Qt::WFlags flags = 0);
    	//Destructeur
    	~Polux_application();
     
    private:
    	Ui::Polux_applicationClass ui;
    	Explorateur *exploreur;
    	Dialogue *dial;
    	QString path_model;
    	int cpt_page;
    	int nb_fenetre;
    	bool test_execute;
    	bool test_connect;
    	bool test_deconnection;
    	page_visualisation1 **page_visu;
    	QString titre_courbe;
    	QString texte_courbe;
    	QMessageBox* message_courbe;
     
    	QString nom_variable_visu;
     
    private slots:
    	void on_button_charger_clicked();
    	void on_actionOuvrir_Dictionnaire_triggered();
    	void on_actionOuvrir_Mod_le_triggered();
    	void on_Fermer_polux_appliction_triggered();
    	void on_executerButton_clicked();
    	void creer_page();
    	void pause_page();
     
    };
    #endif // POLUX_APPLICATION_H
    et maintenant le code :
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
     
    #include "polux_application.h"
    Polux_application::Polux_application(QWidget *parent, Qt::WFlags flags)
    	: QMainWindow(parent, flags)
    {
    ui.setupUi(this);
    exploreur = new Explorateur();
    dial = new Dialogue();
     
    page_visu = new page_visualisation1* [20];
     
    test_execute=true;
    test_connect=true;
    cpt_page=1;
    }
     
    Polux_application::~Polux_application()
    {
    	if (test_connect==false)
    	{
     dial->stop_timer();
     dial->reset_disconnect_model();
    	}
    }
     
    void Polux_application::pause_page()
    {
    for (int i=0;i<nb_fenetre;i++)
    {
    	page_visu[i]->~page_visualisation1();
    }
    }
     
    void Polux_application::creer_page()
    {
    switch (cpt_page)
    {
    	case 1:
    		{
    		nom_variable_visu="rtdemo1/sm_computation/port2";
    		page_visu[0]->creation_page(page_visu[0], dial,nom_variable_visu);
    		cpt_page=2;
    		}break;
     
    // Les cases continue jusqu’a 20 : j’en suis pas fier mais c’est du temporaire, disons afin de tester cette partit de l’application avant de passer à la suite ou nom_variable_visu sera renseigner par l’application elle même.
     
     
    	case 20:
    		{
    			nom_variable_visu ="rtdemo1/sm_computation/Sensor response time/port1";
    		page_visu[19]->creation_page(page_visu[19], dial,nom_variable_visu);
    		cpt_page=21;
    		}break;
    	case 21:
    		{
    			titre_courbe="Affichage";
    			texte_courbe="Vous demandez l affichage de trop de fenêtre visualisation : le maximum de fenêtre est de 20. ";
    			message_courbe= new QMessageBox(QMessageBox::Critical,titre_courbe,texte_courbe,QMessageBox::Ok);
    			message_courbe->exec();
    		}break;
    }
    }
     
    void Polux_application::on_executerButton_clicked()
    {
    	if(test_execute==true)
    	{
    	bool test_exec = dial->executer_model();
    		if (test_exec == true)
    		{
    		test_execute=false;
    		ui.executerButton->setText("Stop");
    		nb_fenetre=6;
    			cpt_page=1;
    			for (int i=0;i<nb_fenetre;i++)
    			{
    			page_visu[i] = new page_visualisation1;
    			creer_page();
    			}
    		}
    	}
    	else
    	{
    	bool test_pause = dial->pause_model();
    		if (test_pause == true)
    		{
    		ui.executerButton->setText("Exécuter");
    		test_execute=true;
    		pause_page();
    		}
    	}
    }
    //je n’est pas mis le reste car cela ne concerne pas les pointeurs page_visu…
    Voilà le code qui concerne le tableau de pointeur de ma classe, l’erreur ce produit j’appuie sur le bouton exécuter et donc quand je rentre dans void Polux_application::on_executerButton_clicked(). J’ajoute que c’est le constructeur de cette classe qui est appellée dans le main.

    Je vous remercie tous de votre aide et surtout IrmatDen… MERCI

  7. #7
    Membre expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Points : 3 266
    Points
    3 266
    Par défaut
    Désolé, je galère pour relire ton code là :/

    On va y aller autrement, tu l'as peut-être essayé, mais comme tu n'en parles pas (enfin, si je suis bien réveillé ), on va tenter le coup.
    Compile en mode console (CONFIG += console dans le .pro), ça permettra de checker la sortie d'erreur de Qt, je pense qu'il y aura un peu plus d'infos.
    Dernière piste, il faudra savoir la ligne exacte où ça plante:
    > compiler en mode release avec les symboles de debug
    > ou plus crade ouvrir un fichier de log, et logger des messages correspondants à chaque ligne et voir où ça s'arrête.

    Au passage:
    > dans pause_page tu appelles direct le destructeur; il y a une raison particulière à ça et pas un delete?
    > tu ne libères pas la mémoire allouée pour **page_visu dans le destructeur

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 43
    Points : 25
    Points
    25
    Par défaut
    Voilà, je comprends pour moi aussi c’est dur de comprendre le code des autres et en plus le mien est disons (à mon avis) très personnel dans le mauvais sens, mais bon passons.

    Alors le delete à été rajouté, et j’appelle le destructeur car je veux détruire ma classe en me déconnectant donc, il y a du code dedans et le delete, si me souvient bien n’exécute pas les lignes de code du destructeur.

    Maintenant mon problème, franchement dans tous ce que tu m’as dit, je ne sais pas vraiment faire, ou est le .pro ? J’ai visual studio 2005 avec un petit logiciel d’intégration pour Qt, je ne gère pas du tout sa !! Et la franchement j’ai compilé en release avec les symboles debug (et si quelqu’un sait, je suis intéresser)

    Bref avec une technique bien personnel, j’ai trouvé ou le bug se produisait (la ligne exacte) : c’est dans la fonction que j’appelle dans crée page() de cette façon :

    nom_variable_visu="rtdemo1/sm_computation/port2";
    page_visu[0]->creation_page(page_visu[0], dial,nom_variable_visu);

    void page_visualisation1::creation_page(page_visualisation1* px,Dialogue *dial,QString nom_variable_visu, int echelle)

    //deux trois lignes de code sans problème

    //Et voilà la ligne de code ou j’ai mon erreur :
    myPlot = new QwtPlot(nom_variable_visua, this);

  9. #9
    Membre expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Points : 3 266
    Points
    3 266
    Par défaut
    Citation Envoyé par Polux95
    Alors le delete à été rajouté, et j’appelle le destructeur car je veux détruire ma classe en me déconnectant donc, il y a du code dedans et le delete, si me souvient bien n’exécute pas les lignes de code du destructeur.
    Non, tu te rappelles mal; c'est pour cette raison précise qu'il faut employer delete au lieu de free en C++, ainsi que new au lieu de malloc (passage dans le constructeur). Là, en plus tu ne libères pas la mémoire me semble-t-il, tu ne fais que détruire l'état de l'objet.
    Citation Envoyé par Polux95
    Maintenant mon problème, franchement dans tous ce que tu m’as dit, je ne sais pas vraiment faire, ou est le .pro ? J’ai visual studio 2005 avec un petit logiciel d’intégration pour Qt, je ne gère pas du tout sa !! Et la franchement j’ai compilé en release avec les symboles debug (et si quelqu’un sait, je suis intéresser)
    Je ne connais pas la version pro de VS, donc ça va être à l'aveuglette:
    > info de debug: propriétés du projet > C/C++ > General > Debug Information Format à mettre sur "program database"
    > mode console: si tu ne bénéficies pas du .pro, j'imagine que ce doit être l'option "classique" dans propriétés du projet > Linker > System > Subsytem à mettre sur "Console"
    Citation Envoyé par Polux95
    Bref avec une technique bien personnel, j’ai trouvé ou le bug se produisait (la ligne exacte) : c’est dans la fonction que j’appelle dans crée page() de cette façon :

    nom_variable_visu="rtdemo1/sm_computation/port2";
    page_visu[0]->creation_page(page_visu[0], dial,nom_variable_visu);

    void page_visualisation1::creation_page(page_visualisation1* px,Dialogue *dial,QString nom_variable_visu, int echelle)

    //deux trois lignes de code sans problème

    //Et voilà la ligne de code ou j’ai mon erreur :
    myPlot = new QwtPlot(nom_variable_visua, this);
    Je vois pas le rapport
    Si j'ai bien suivi, nom_variable_visua n'est pas un pointeur donc pas de souci... et this pas de souci non plus sur this normalement (page_visualisation1 dérive bien de QWidget a un niveau plus ou moins profond non?)

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 43
    Points : 25
    Points
    25
    Par défaut
    Merci pour ton rappel sur les destructeurs, je vais modifier sa, …
    Et non nom_variable_visua est un QString déclarer dans mon.h (en faite dans les trois lignes entre creation_page(…..) et QwtPlot j’ai un nom_variable_visua=nom_variable_visu ) , mais c’est sur cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myPlot = new QwtPlot(nom_variable_visua, this);
    que ce produit mon erreur décrite au début :
    Debug error!
    Program : ...
    Module : 4.2.2
    File Global\qglobal.cpp
    line : 2001

    QWidget : must construct a qApplication before a QpaintDevice
    Sinon oui ma classe est déclarer avec un Qwidget :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     class page_visualisation1 : public QWidget
    Et la franchement je bloque !!!

    J’ai donc regardé les options que tu m’as dites :

    Bon déjà tu avais bon, mais le mien était sur programme database (/Zi), donc je ne l’ai pas changé ensuite j’ai mis le mode console. Sur la console je retrouve le même message d’erreur et pas d’information supplémentaire.

    Maintenant voilà mon avis je ne pense pas que cela vienne d’un pointeur, mais du fait qu’il faut faire quelque chose lorsqu’on utilise la librairie additionnelle Qwt. Si le QwtPlot est assimilée à un « QpaintDevice », il faut peut être rajouter une initialisation avant de l’appelée.

    Voilà un grand merci à IrmatDen pour le temps qu’il passe à m’aider !!!!

  11. #11
    Membre expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Points : 3 266
    Points
    3 266
    Par défaut
    Si c'est pas top secret, y'aurait moyen que tu upload une archive de ton projet stp? Pour rencontrer le problème y'a besoin de quelque chose d'autre que Qt ou Qwt?

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 43
    Points : 25
    Points
    25
    Par défaut
    Sa va être difficile car j’ai toutes une partit, disons de dialogue imbriqué dans le programme qui nécessite une bibliothèque OPAL (cette partit fonctionne bien) et un ordinateur sur le réseau qui crée des simulations en temps réel et il me faut aussi Matlab-Sim… et un modèle qui va bien (pour l’exemple), bref je peu essayer de faire un code qui reproduit l’erreur.
    Sinon j’ai peu être trouvé quelque chose d’intéressant sur Internet, voilà le lien :
    http://lists.trolltech.com/qt-intere...ead00075-1.htm

  13. #13
    Membre expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Points : 3 266
    Points
    3 266
    Par défaut
    Ton lien correspond probablement; c'est toi qui devrait le savoir vu que c'est toi qui configure ton projet

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 43
    Points : 25
    Points
    25
    Par défaut
    Oui cela correspond, mais il parle d'un patch cvs que je cherche... la suite je ne la comprends pas!!! Donc je ne sais pas encore si sa va résoudre mon problème!!

    merci, vraiment ça fait plaisir de voir qu'on peu encore être aidée de cette manière

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 83
    Points : 93
    Points
    93
    Par défaut
    Le problème semble être un mélange de différents C run-time dans la même application.

    Il faut faire attention à linker le programme en mode debug avec la bibliothèque Qt debug et la bibliothèque Qwt debug.

    Voir par exemple What problems exist if an application uses both msvcrt.dll and msvcr80.dll? ainsi que How to link with the correct C Run-Time (CRT) library.

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 43
    Points : 25
    Points
    25
    Par défaut
    Bonjour à tous,
    Je vois, c’est ma librairie Qwt qui n’est pas linker en release alors que mon programme lui est en release.

    Mais comment fait t’on pour linker la bibliothèque Qwt en release lorsque mon programme est en release ? Faut t-il changer le . pro ? Si oui lequel ? Ou c’est une option dans visual studio ? C’est ma première application avec Qt, et je suis perdu la !!!

    Merci à tous pour vos réponses.

  17. #17
    Membre expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Points : 3 266
    Points
    3 266
    Par défaut
    Ouvre la ligne de commande de Visual (pour avoir toutes les variables d'environnement préparées comme il faut), ensuite va dans le répertoire de base de Qwt (par exemple C:\qwt-5.0.0rc1), et tape nmake release.
    Et là, croise les doigts

  18. #18
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 43
    Points : 25
    Points
    25
    Par défaut
    Bah j’ai ouvert comand prompt (Visual studio Command prompt), puis sur celui-ci j’ai été dans le répertoire ou j’ai Qwt. Mais quand je tape nmake release, j’ai une erreur :
    NMAKE : fatal error U1073 : don’t know how to make ‘release’
    Alors soit, je ne suis pas doué, et ce n’est pas ce que vous appelé « la ligne de commande visual » soit je sais pas.

    merci pour tous.

  19. #19
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Salut à tous,
    J'ai exactement le meme probleme que toi Polux95, sauf que meme en debug j'obtiens le meme message d'erreur ...
    Je precise que Qwt est compilé en release (pas en debug) sur ma machine (d'apres les options de qwtconfig.pri), et que je compile mon appli en debug ou en release le probleme est le meme !!!

    Je pense pas que ca vienne de mon code que sous linux il fonctionne parfaitement.

    Sinon de mon cote je suis arrive a la meme conclusion que vous a savoir que c'est bien la librairie Qwt qui fait planter. En effet, j'ai enleve les widgets de Qwt de mon appli et la ca marche parfaitement.
    Pourtant si c'est la librairie Qwt qui marche pas, le compilateur devrait faire une erreur pendant la compilation alors que je n'est pas une seule erreur pas meme un petit warning !!
    Je pense pourtant que Qwt est bien compile que les widgets se sont rajoutes tout seul dans Qdesigner, et les examples fournis avec Qwt se compilent parfaitement avec visual et se lance sans probleme, donc c'est vraiment a n'y plus rien comprendre ....

    Bref, si quelqu'un a trouve une solution a ce probleme HELLPPPP please !!!
    Merci à tous.

    PS : je suis sous visual .net 2003 avec Qt 4.2.3 opensource et Qwt 5.0.1

  20. #20
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Bon alors j'ai trouve une premiere solution mais pas encore satisfaisante.
    Le probleme venait bien de la librairie Qwt qui etait compiler en dynamique alors qu'il la fallait en static (je ne sais pas du tout pourquoi je suis assez nouveau dans le petit monde des librairies ... si quelqu'un peux m'expliquer la difference merci à lui !!).
    Une fois Qwt compiler en static, je compile mon projet dans visual en release et la magie ca marche !!!
    Encore un petit probleme : lorsque je lance l'appli à partir du .exe creer, il me fait une erreur et ferme de suite ... en regardant tous les warnings que me genere visual lors de la compilation je pense que j'ai encore un petit probleme de librairie.
    Je vais essayer de me documenter sur leur fonctionnement (static dynamique ....).

    Merci à tous pour vos posts qui m'ont bien aider !!

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Problème en mode release
    Par ziteak dans le forum Débuter
    Réponses: 2
    Dernier message: 05/03/2011, 18h25
  2. Problème en mode Release
    Par moooona dans le forum C#
    Réponses: 0
    Dernier message: 06/01/2011, 12h49
  3. Problème bizarre en mode Release
    Par jagboys dans le forum C++/CLI
    Réponses: 4
    Dernier message: 20/12/2007, 16h11
  4. Problème "ON_CONTROL_RANGE" mode release
    Par BoyzInDaProject dans le forum MFC
    Réponses: 5
    Dernier message: 11/05/2007, 17h24
  5. [VB.NET] Problème exécution en mode release.
    Par leSeb dans le forum Windows Forms
    Réponses: 2
    Dernier message: 07/01/2005, 17h39

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