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

wxWidgets Discussion :

Lancement d'un programme minimal


Sujet :

wxWidgets

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 40
    Points : 19
    Points
    19
    Par défaut Lancement d'un programme minimal
    Bonjour,

    Je suis sous code::blocks 13.12 et windows 7.

    Je commence à me former à wxWidget 3.02.
    Pour cela j'observe le comportement du programme minimal contenu dans le répertoire samples/minimal de wxWidgets.

    Tout se passait trés bien (le fenetre minimale se lance normalement), jusqu'à ce que je j'ajoute une librairie personnelle dans

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 40
    Points : 19
    Points
    19
    Par défaut Pb lancement programme minimal
    Excusez moi, j'ai envoyé le premier message par inadverdance.
    Je reprend donc :

    Je suis sous code::blocks 13.12 et windows 7.

    Je commence à me former à wxWidget 3.02.
    Pour cela j'observe le comportement du programme minimal contenu dans le répertoire samples/minimal de wxWidgets.

    Tout se passait trés bien (le fenetre minimale se lancait normalement), jusqu'à ce que je j'ajoute une librairie statique personnelle via : build options -> linker settings -> malibrairiestatique.a

    (Je fait cela dans le but de préparer le developpement de ma furture application sous wxWidgets.)

    Or une fois cette librairie staique référencée, tout semble bien se dérouler à la compilation et au build, mais au run, rien ne se passe, comme si le programme ne démarrait pas.

    Une explication ?

    Merci de votre aide

    jcm

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 40
    Points : 19
    Points
    19
    Par défaut Complément
    Re bonjour,

    J'en profite pour vous demander autre chose.
    Actuellement, je suis en mode release pour l'environnment wXWidget.

    Mais comment cela va t-il se passer lorsque je voudrai plus tard debugger mes propres programmes sous wXWidgets ?
    car l'ensemble y compris mes propores applications seront dons necessairement en mode release.

    Faudra t-il que je réinstalle complétement wXWidget en mode debug afin de lui permettre d'accepter le debugging d'applications spécifiques ?

    Merci de ces eclaircissments.

  4. #4
    Membre averti Avatar de wxXav
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Décembre 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur amateur

    Informations forums :
    Inscription : Décembre 2008
    Messages : 214
    Points : 354
    Points
    354
    Par défaut
    Salut.

    En ce qui concerne ton premier problème, il faut plus d'infos :
    • Quelle est cette bibliothèque additionnelle que tu as ajouté ?
    • Est-ce que tu as ajouté du code pour l'initialiser ou tu l'as juste ajouté au linker ?


    Pour ta deuxième question, sache qu'il est tout à fait possible de faire cohabiter des libs release et debug (il en va de même pour ton application).
    D'où viennent les tiennes ?
    Est-ce que tu les as compilées toi même ou est-ce que tu as téléchargé une version compilée quelque part ?

    Si tu les as téléchargées, vérifie qu'il n'y a pas une version debug (dans le dossier "lib/gcc_dll ou lib/gcc_lib", tu trouveras un sous dossier "mswu" pour les libs release et "mswud" pour les libs debug).

    Et sous Code::Blocks, tu peux avoir plusieurs cibles de compilation (Build target).
    Pour ma part, comme je fourni une version compilée (http://mywxstuff.olympe.in), j'arrive à faire cohabiter 40 versions différentes afin de pouvoir faire quelques tests :
    • MinGW / Visual C++
    • 32 bits / 64 bits (ainsi qu'une version 32 bits compilée avec MinGW64)
    • Release / Debug
    • Statique / Dynamique
    • Monolithique / Multi-libs


    @+
    Xav'

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 40
    Points : 19
    Points
    19
    Par défaut
    Merci de ta réponse,

    - En ce qui concerne le problème de la bibliothèque ajoutée :
    Il s'agit d'une bibliothèque statique que j'ai moi-même construite à l'aide de la procédure new project->static library.
    Je l'ai simplement ajoutée au linker comme je l'avais déjà fait pour un projet de type console application et qui fonctionnait bien avec cette librairie.
    C'est une librairie qui contient simplement des outils assez généraux de toutes sortes que je peux appeler si nécessaire.

    - En ce qui concerne la possibilité de linker avec du code en debug dans un environnement en release, je viens effectivement de voir l'option build target.
    Si par exemple je veux qu'une fonction f (de mon application) soit compilée en Debug, faut-il ajouter a "new build target name" avec Debug et cochez f pour Debug ?

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 40
    Points : 19
    Points
    19
    Par défaut
    Excuse moi, j'avais mal compris ta question sur les libs. Tu parlait sans doute des libs de wxwidgets.
    En effet je les ai compilées moi-meme en optant pour une version release comme conseillé dans les différentes docs.

    Je ne dispose donc pas de librairies debug dans \lib\gcc_dll. Je linke avec libwwmsw30u.a

    J'ai réussi à linker avec ma librarie perso qui s'apelle liboutilsgen.a. Celle-ci est compilée en mode Debug.
    Actuellement voici ma config :

    - Dans build options, je linke avec 2 librairies : - en Release pour libwwmsw30u.a pour wXWidgets3.02
    - en Debug pour liboutilsgen.a pour mes fonctions perso. Par la suite, j'appelle f l'une de ses fonctions.

    - Dans build targets, - Option Release / GUI application :Sont cochés "Testgraph.cpp/ Testgraph.hpp" mon programme minimal et son entete, qui appelle déja une fonction f implémentée dans la librairie perso liboutilsgen.a.
    - Option Debug (récemment crée) : Les deux fichiers précédents sont décochés et aucune référence à ma librairie perso.

    Ensuite je build en mode release (seul autorisé pour le build)
    Enfin je peux lancer cette petite appli en mode release (seule autorisée), elle tourne.
    Le probléme c'est que si je devais le faire, je ne pourrais pas debugger ma fonction f puisque je n'ai pas la main en mode debug meme si f est bien compilée en debug dans sa librairie liboutilsgen.a

    En résumé, comment faire pour avoir accés en mode debug à une fonction applicative appellée dans l'environnemenr de wxwidgets ?

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 40
    Points : 19
    Points
    19
    Par défaut
    Bonsoir,

    Je viens de me rendre compte qu'en fait ma librairie perso liboutilsgen.a (compilée en Debug) n'est pas prise en compte.
    J'avais l'illusion qu'elle l'était car je ne testait sur des appels à des fonctions templates dont le code est déja inclus dans l'entete meme.
    Mais si j'appelle une fonction simple (non template) qui appartient à ma librairie dans une fonction de xwwidgets (par exemple ::Onabout) le linker me signale bien une référence non résolue sur cette fonction.

    Pourtant j'ai bien ajouté la librairie en question avec celle de libwxmsw30u.a au niveau du linker ( en mode release.)
    Si je met l'appel de cette fonction en commentaire, le build se fait, mais je reviens au meme pb, à savoir le programme ne se lance pas. Il y'a donc un problème.

  8. #8
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations forums :
    Inscription : Février 2006
    Messages : 562
    Points : 859
    Points
    859
    Par défaut
    Bonjour.

    As tu vérifié les chemins d'accès à ta librairie dans les options de ton projet ?

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 40
    Points : 19
    Points
    19
    Par défaut
    Oui comme le disais dans un autre message, j'ai refait encore des essais hier. La librairie statique est bien prise en compte puisque je n'ai pas de référence irrésolue au build concernant l'appel à la fonction f (dont le code est implémentée dans la librairie statique en question).

    D'ailleurs si j’enlève la référence à la librairie du linker, le build me signal que f est irrésolue, normal.

    Le pb c'est que le run se termine immédiatement (après 0s) et sans le moindre message d'erreur.

    Quelqu'un as t-il déjà essayé de linker sous une appli GUI wxWidgets avec une librairie statique ?

  10. #10
    Futur Membre du Club
    Homme Profil pro
    administrateur Unix
    Inscrit en
    Août 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : administrateur Unix

    Informations forums :
    Inscription : Août 2011
    Messages : 6
    Points : 8
    Points
    8
    Par défaut
    bonjour,

    Oui, personnellement, je link les librairies statiques wxWidgets3.0 avec les librairies satiques Mysql. ça fonctionne très bien. J'ai juste pris soin de linker le librairies Mysql APRES les librairies wxWidgets.

    Je ne connais pas trop Code::Blocks, mais n'y a-t-il pas moyen d'éxécuter ton programme en mode pas à pas pour voir ce qui cause son arrêt ?

    A+

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 40
    Points : 19
    Points
    19
    Par défaut
    Ok, merci de ta réponse. Je vérifierai l'ordre d'appel des librairies dans le linker car je ne suis pas chez moi.

    J'ai réussi à aller sous debugger hier pour faire du pas à pas et voici ce que j'ai obtenu comme messages :

    Debugger name and version: GNU gdb (GDB) 7.5
    Child process PID: 2996
    In ()
    In __mingw_CRTStartup () ()
    In ExitProcess@4 () ()
    In KERNEL32!BasepFreeActivationContextActivationBlock () (C:\Windows\syswow64\kernel32.dll)
    In ntdll!TpSetPoolStackInformation () (C:\Windows\system32\ntdll.dll)
    In ntdll!LdrUnregisterDllNotification () (C:\Windows\system32\ntdll.dll)
    In ntdll!LdrVerifyImageMatchesChecksumEx () (C:\Windows\system32\ntdll.dll)
    In ntdll!RtlInitializeContext () (C:\Windows\system32\ntdll.dll)
    In ntdll!TpSetPoolStackInformation () (C:\Windows\system32\ntdll.dll)
    In ntdll!RtlFindSetBits () (C:\Windows\system32\ntdll.dll)
    In ?? () ()
    Cannot find bounds of current function
    Cannot find bounds of current function
    Cannot find bounds of current function
    etc ... et je sort du process donc.

    En résumé, le programme n'arrive pas à démarrer.

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 40
    Points : 19
    Points
    19
    Par défaut
    J'ai vérifié à nouveau et ma librairie statique perso est bien déclarée juste APRES la librairie wxwidgets libwxmsw30u.a

    Je me demandais si le chemin d'accés de wxWidgets ne devait pas etre déclaré dans la variable d'environnement PATH comme l'est celui de Code:Blocks par exemple ?
    Actuellement ce n'est pas le cas dans ma configuration.

    Si je trouve une solution à ce mystérieux problème je vous tiens au courant.

Discussions similaires

  1. [VB.NET]Lancement d'un programme que s'il n'est pas lancé
    Par cyrcroix dans le forum Windows Forms
    Réponses: 3
    Dernier message: 01/06/2005, 14h05
  2. Lancement d'un programme au boot d'un ordinateur
    Par chrispdc dans le forum Autres Logiciels
    Réponses: 13
    Dernier message: 25/04/2005, 12h03
  3. [Kylix] Problème au lancement d'un programme
    Par jeanbi dans le forum EDI
    Réponses: 7
    Dernier message: 19/01/2005, 23h00
  4. Réponses: 4
    Dernier message: 21/05/2004, 11h24
  5. Lancement d'un programme java depuis un script php
    Par gexti dans le forum Développement Web en Java
    Réponses: 8
    Dernier message: 07/05/2004, 17h40

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