Erreur std::string mario kart [Résolu]

pillouw 1 Messages postés samedi 21 janvier 2017Date d'inscription 21 janvier 2017 Dernière intervention - 21 janv. 2017 à 20:40 - Dernière réponse : cptpingu 3778 Messages postés dimanche 12 décembre 2004Date d'inscriptionModérateurStatut 15 février 2018 Dernière intervention
- 22 janv. 2017 à 15:20
Bonjour.

Alors voilà, je suis en école d'ingénieur et on nous a demandé de créer un mini jeu vidéo. Seulement j'ai un petit problème ! En effet, lorsque je compile avec un make, par d'erreur de compilation mais lorsque j'exécute, ça me met ça:

g++ -g -Wall -Wextra -O2   -c -o main.o main.cpp
g++ main.o glutils.o mat4.o vec2.o vec3.o triangle_index.o vertex_opengl.o tga.o
mesh.o format/mesh_io_obj.o format/mesh_io_off.o -o executable -L/usr/lib -lm -lglut -lGLEW -lGLU -lGL -pthread
guillemaut@guillemaut-VirtualBox:~/Bureau/TSI/src$ ./executableterminate called after throwing an instance of 'std::string' Abandon (core dumped)
Afficher la suite 

1 réponse

Répondre au sujet
cptpingu 3778 Messages postés dimanche 12 décembre 2004Date d'inscriptionModérateurStatut 15 février 2018 Dernière intervention - Modifié par cptpingu le 7/02/2017 à 13:54
0
Utile
Bonjour.

J'ai édité ton message pour virer les 10km de codes inutiles. Quand tu postes, mets du code *ciblé* et pas tes 12 000 lignes...
L'extrait que tu as mis ne pouvait pas aider :(.

Tout d'abord, pour trouver ce qui ne va pas, il faut commencer par avoir les bons réflexes:
  • Compile ton code en mode debug (tu dois avoir une règle "make debug", si ce n'est pas le cas, c'est à faire immédiatement !). La règle suppose que tu mets un -g, et pas d'optimisation (-O0). Si tu mets un -g et une optimisation, ça ne sert à rien...
  • Vu que ton code sera compilé en -g, tu vas pouvoir le débugger via gdb. Donc tu lances ton binaire avec gdb et tu attends qu'il plante.
  • Une fois ton code planté, tu tapes "bt", et là, tu vas avoir une "stack trace", qui va te dire exactement ou ton code plante (et à quelle ligne).


Au vu de l'erreur, il est clair qu'une exception non "catchée" est levée. Cette exception est lancée par la classe std::string quand on essaie de l'initialiser avec 0. Ça sent l'erreur d'initialisation d'un std::string quelque part dans ton code. Généralement, c'est de la forme: std::string toto(ma_var) ou std::string toto = ma_var, avec ma_var qui vaut le nombre 0 (ou NULL, c'est pareil).

Attention, OpenGL sous VirtualBox, j'en ai déjà fait, et ça ne se passait pas toujours très bien... J'ai déjà eu des soucis de mouvements de souris et de caméra que je n'avais pas sur un "vrai" OS (c-à-d pas virtualisé). Peut-être que les versions récentes de VirtualBox ont corrigé cela... Mais je t'invite à bien tester ton code sur un OS non virtualisé (Linux, ou Windows).


Améliorer votre expérience CodeS-SourceS avec ce plugin:
http://codes-sources.commentcamarche.net/forum/affich-10000111-plugin-better-cs-2#cptpingu-signature
Commenter la réponse de cptpingu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.