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

Messages postés
1
Date d'inscription
samedi 21 janvier 2017
Dernière intervention
21 janvier 2017
-
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 

Votre réponse

1 réponse

Messages postés
3830
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
19 novembre 2018
0
Merci
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.