Je possède une application Qt qui fonctionne en mode Débogage sans aucun problème. Depuis deux jours, j'essaie de la faire fonctionner en mode Release. Après quelques modifications des propriétés du projet, j'ai réussi à compiler sans erreurs. Malheureusement, l'application plante avant même d'atteindre la méthode principale. Voici mon environnement :
- MS VS 2010
- Qt 4.8.4
- Qwt 6.0.0
Je ne sais pas si c'est pertinent, mais j'ai également installé le plugin Qt pour VS et utilisé Qt Designer pour créer mon interface graphique.
Comme je l'ai dit en mode Débogage, il n'y a aucun problème. Lancer la version Release depuis Visual Studio produit l'erreur suivante : Exception non gérée à l'adresse 0x77c415de dans Application.exe : 0xC0000005 : violation d'accès à l'emplacement 0x0000000c.
La dernière fonction que je peux "déboguer" est la méthode "WinMain" appelée à l'intérieur de la méthode "__declspec(noinline) int __tmainCRTStartup", qui se trouve dans crtexe.c (honnêtement, je n'ai aucune idée de ce que c'est). La pile d'appels ressemble à ceci :
ntdll.dll!77c415de()
[Les trames ci-dessous peuvent être incorrectes et/ou manquantes, aucun symbole chargé pour ntdll.dll]
ntdll.dll!77c415de()
ntdll.dll!77c3014e()
msvcr100.dll!718f0269()
msvcr100.dll!718f233b()
msvcr100.dll!718f233b()
msvcr100.dll!718f233b()
QtCore4.dll!5b2cfc49()
QtGui4.dll!57bf54ea()
Application.exe!__tmainCRTStartup() Ligne 547 + 0x1c octets C
kernel32.dll!754633aa()
ntdll.dll!77c59ef2()
ntdll.dll!77c59ec5()
Je suis complètement perdu face à ce problème pour le moment. Aucune idée de ce que je devrais essayer ensuite...
J'ai essayé de réduire le programme et de commenter toute la fonction main. Mais le résultat était le même comportement. Comme je l'ai dit, l'erreur se produit même avant l'appel de la fonction principale. J'ai également désactivé toutes les optimisations et recompilé... rien n'a changé.
Ce qui me trouble complètement, c'est le fait que ça "fonctionne" lorsque j'appelle "Application.exe" depuis l'invite de commandes (d'accord, ça plante aussi mais bien plus tard pendant l'exécution). Bizarre, n'est-ce pas ? Quelle est la différence entre démarrer depuis l'invite de commandes et démarrer depuis l'application Visual Studio ?