Hallo,
Die Kompilierung meines Programms verläuft problemlos. Dummerweise wird aber der Start des Programms durch ein "Segmentation Fault" abgebrochen.
Ich konnte den Fehler auf diese Zeile in main() eingrenzen.
SpriteBase RescuerBase;
/* Es ist diese Zeile darunter */
RescuerBase.setGraphicData("rescuer");
"rescuer" ist übrigens ein gültiges Verzeichnis.
Die Funktion dazu sieht folgendermaßen aus, wobei ich sicherheitshalber auch die indirekt einbezogene Funktion angebe (da ich auf die Variablen dieser Methode zugreife):
class SpriteBase {
public:
int imageWidth;
int imageHeight;
int frameNumbers;
SpriteFrame *animPart;
void setGraphicData(char *dir);
};
void SpriteBase::setGraphicData(char *dir) {
FILE *fp;
char filename[255];
char buffer[255];
char name[255];
int count;
int pause = 0;
sprintf(filename, "%s/info", dir);
if ( (fp=fopen(filename, "r")) == NULL) {
printf("Error opening file %s", filename);
exit(1);
}
fgets(buffer, 255, fp);
sscanf(buffer, "FILES:%d", &frameNumbers);
animPart = new SpriteFrame[frameNumbers];
while (!feof(fp) && count < frameNumbers) {
fgets(buffer, 255, fp);
if (buffer[0] != '\n' && buffer[0] != '\r' && buffer[0] != '\0' && strlen(buffer) != 0) {
sscanf(buffer, "%s %d", name, &pause);
sprintf(filename, "%s/%s", dir, name);
SDL_Surface *temp;
if ( (temp = IMG_Load(filename)) == NULL) {
printf("Couldn't find %s\n", filename);
exit(1);
}
animPart[count].image = SDL_DisplayFormat(temp);
animPart[count].pause = pause;
imageWidth = animPart[count].image->w;
imageHeight = animPart[count].image->h;
count++;
SDL_FreeSurface(temp);
}
}
fclose(fp);
}
Findet jemand diesen Fehler, der einen SegFault auslöst? Ich sehe nämlich offensichtlich den Wald vor lauter Bäumen nicht mehr.
Markus.
--
http://www.apostrophitis.at
Maschiene währe Standart Gallerie vorraus Packete Objeckte tollerant vieleicht
http://www.apostrophitis.at
Maschiene währe Standart Gallerie vorraus Packete Objeckte tollerant vieleicht
