Membres inscrits :2359
Membres en ligne : 0
Invités en ligne : 4


|
Conversation : Mélange Shared/Static wxWidgets |
paul_c_weiss (Membre)
Inscrit le : 07-12-2012
Messages: 28
Snippets: 0
Tutoriels: 0
Hors ligne |
Bonjour! J'ai dernièrement installé Code::Blocks 16.01 et wxWidgets 3.0 sous Windows 7. J'ai téléchargé WxWidgets (compilé) à partir de ce site et j'ai scrupuleusement (du moins je crois..) suivi la procédure d'installation. Apparemment tout marche bien! Les programmes compilent, tournent... Or, en transférant un ancien programme, je suis tombé sur une erreur d'exécution qui est liée, je crois, à l'usage de wxSmith.J'ai donc contacté le forum de Code::Blocks pour poser ma question. Or, parmi les réponses, j'ai trouvé, entre autres:
"OP (Opening Post)is making a major wxWidgets/CB mistake. In places he has shared wxWidgets and in other he has static wxWidgets...."
Il n'est pas sûr du tout que cela explique l'erreur. Néanmoins ce n'est pas net, et je me demande comment j'ai pu me retrouver dans une telle situation.
J'ai crée le projet avec le Wizard de Code::Blocks avec les options: wxSmith, Dialog Based Use wxWidgets DLL. monolithic non coché, enable unicode
Et cela me semble tout....
Quelqu'un peut-il me dire
1) comment détecter ce mélange - je ne vois rien à la compilation/lien, etc.. 2) Comment cela a-t-il pu arriver??
Merci d'avance!
|
|
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1390
Snippets: 25
Tutoriels: 6
Site web
Hors ligne |
Salut.
Je ne pense pas que le mélange soit réellement effectif : tu aurais des erreurs à la compilation.
Malgré tout, tu peux vérifier les options de compilation du projet dans Code::Blocks. En regardant les répertoires de recherche pour le compilateur, l'éditeur de liens et le compilateur de ressources, que ce soit au niveau global pour le projet ou pour une configuration spécifique, tu ne dois jamais avoir de mélange "gcc_lib" et "gcc_dll".
J'ai trouvé le topic sur le forum de Code::Blocks. Je vais jeter un coup d'oeil au projet que tu as fourni.
@+ Xav' ---------- J'ai téléchargé le petit projet de test.
Le problème que j'ai eut lors de l'exécution se trouvait à la fermeture de la fenêtre (plantage de l'application) : je ne sais pas si c'est la même chose que toi ?
J'ai trouvé la source de ce problème dans le code du constructeur de la frame. Il y a un sizer (nommé BoxSizer3) qui est affecté à la fois à un panel "enfant" de la frame nommé HidePanel (voir ligne 94) et il est ensuite affecté à la frame elle même (ligne 95).
En commentant les lignes 95 et 96, le plantage disparait.
Par contre, je ne comprends toujours pas pourquoi, sur le forum de Code::Blocks, on te dit que tu mélanges "static" et "shared". Pour moi, le projet est nickel. Le seul reproche que j'aurais à faire (et qui a également été signalé sur le forum de Code::Blocks) est que les chemins de recherche (include et link) sont donnés en dur (D:/wxW3/......). Tu devrais essayer d'utiliser les variables globales de Code::Blocks, c'est bien pratique.
@+ Xav'
Dernière modification par Xaviou (28-04-2016 07:43:53)
|
Le nouveau portail wxWidgets francophone : www.wxdev.fr Ben en fait, vous y êtes déjà ... et effectivement, depuis le temps, ce n'est plus tellement nouveau....
|
paul_c_weiss (Membre)
Inscrit le : 07-12-2012
Messages: 28
Snippets: 0
Tutoriels: 0
Hors ligne |
Merci pour ce travail!
Alors, quelques commentaires/questions: 1) Je travaille sur deux machines, l'une (principale) avec CB 13.12 et wxW 2.8, et l'autre (test) avec CB 16.01 et wxW 3.0. Sur les deux, mon programme plante, mais sur la première à la fin, et sur la seconde au début. ???.
2) J'avais bien identifié les deux lignes causant l'erreur, et vu que je pouvais les supprimer. Mais bien sûr, toute modification faite avec wxSmith les re-crée... A mon avis, il s'agit d'un problème de wxSmith, mais est-il lié à la structure de ma fenêtre? Les gens de CB devraient pouvoir y répondre, mais ils se sont focalisés sur le fameux "mélange" peut-être inexistant.
2) Je me rends bien compte du problème causé par le codage "en dur" des chemins de recherche. Je vois ceci à 3 endroits au moins: - A la création du projet, CB me demande le chemin de wxWidgets, - Dans les options du projet, pour ajouter une librairie supplémentaire (wxSQLite, par exemple...) - Dans wxSmith, pour ajouter par exemple une icône.
Jusqu'ici, j'ai naïvement répondu à ces questions en appuyant sue le bouton "recherche" (i. e. ...). Et voilà le résultat. S'il existait un tutorial expliquant l'usage des variables globales, en particulier dans wxSmith, je serais preneur...
En tous cas, merci encore une fois.
Paul
|
|
|