J'ai une application Qt qui utilise une autre bibliothèque dans laquelle la sortie de la fonction est std :: string au lieu d'une chaîne QString.L'utilisation de std :: string avec Qt provoque une erreur d'exécution lors de la destruction
Donc, dans mon programme, j'ai une méthode
void doSomething() {
...
std::string std_string = MyExternalLibraryThatReturnsSTLstring.getString();
QString myQString = QString::fromStdString(std_string);
...
process(myQString);
...
}
Quand mon lib externe retourne un std :: non vide tout chaîne fonctionne très bien. Mais lorsqu'une chaîne std :: string vide est renvoyée, l'application se bloque à la fin de la portée. Je suppose que cela a à voir avec la destruction de l'objet std :: string (?).
La conversion vers QString fonctionne correctement, même avec une chaîne std :: string vide.
Quelqu'un peut-il me dire pourquoi cela se produit, et comment éviter cette erreur d'exécution?
(Dans d'autres discussions certaines personnes ont discuté mélange de débogage et de libérer les bibliothèques, mais je ne pense pas que je l'ai fait. Comment savoir btw?)
ok .. Je l'ai fait et il utilise seulement le standard Qt libs + mon external.dll qui utilise encore beaucoup de choses. Je ne peux pas vraiment dire s'il y a quelque chose qui ne va pas ou pas ici, mais ça ne semble pas être le cas. – Magus