Bonjour,
J'ai une application Qt (5.2) qui me sert à centraliser les appels à un autre programme.
Ce programme ne peut pas être lancé plusieurs fois simultanément et il ne sait pas gérer cela. Je fait donc cela en Qt.
Cela fonctionne bien en mode Debug, aucune erreur, aucune notification, fonctionnement comme attendu.
Quand je compile en mode release, je lance l'exe créé avec Qt, ensuite il lance mon application tierce et a priori à la fin de son exécution le programme Qt plante avec une exception c0000005 pour Qt5Core.dll.
A priori c'est un problème de violation d'accès http://www.qtcentre.org/threads/4645...sion-run-carsh).
Ce qui m'échappe, ce n'est pas la violation d'accès en elle-même, mais pourquoi cela arrive en Release et pas en Debug ?
J'aimerai bien reproduire en mode Debug, parce que débogguer en Release, sans le déboggeur QT, je ne vois pas trop comment faire
Du coup, je met des qDebug de partout et en particulier dans DeleteOnFinish() appelé comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part QObject::connect(process, SIGNAL(finished(int)), slot, SLOT(DeleteOnFinish()));Et bien un qDebug ici et ça ne plante plus Release ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 void SlotFinished::DeleteOnFinish(){ delete sender(); qApp->quit(); qDebug("AAA"); }
Un truc m'échappe, si vous avez une idée, je prends![]()
Partager