problēma

Vēlies radīt spēli, bet nezini ar ko sākt? Sperot pirmos soļus, vari meklēt padomu šeit
Message
Author
atis
Posts: 57
Joined: 30 Nov 2011, 01:08

Re: problēma

#11 Post by atis » 15 Feb 2012, 19:53

Tas backtrace arī tev dīvains izskatās.. Tur trūkst main() funkcijas un Sprite::Draw() funkcijas.

User avatar
kristapuciitis
Posts: 163
Joined: 03 Jun 2011, 14:22

Re: problēma

#12 Post by kristapuciitis » 15 Feb 2012, 19:59

atis wrote:Tas backtrace arī tev dīvains izskatās.. Tur trūkst main() funkcijas un Sprite::Draw() funkcijas.
kāds backtrace?
Gooby pls

atis
Posts: 57
Joined: 30 Nov 2011, 01:08

Re: problēma

#13 Post by atis » 15 Feb 2012, 20:22

Tas pats Call Stack, kas tev skrīnšotā redzams: CRTStartup() -> WinMain() -> SDL_UpperBlit() -> ...

bubu
Guru
Guru
Posts: 398
Joined: 07 Dec 2010, 11:54

Re: problēma

#14 Post by bubu » 15 Feb 2012, 20:50

atis wrote:Tas backtrace arī tev dīvains izskatās.. Tur trūkst main() funkcijas un Sprite::Draw() funkcijas.
Kas vainas WinMain? Ja studijā linko ar /SUBSYSTEM:WINDOWS argumentu, tad linkeris izmanto WinMain kā programmas entry-point'u, nevis main.

Tas ka Sprite::Draw trūkst - tas gan dīvaini? Varbūt projekta Debug konfigurācijai ir ieslēgta optimizācija?

Vēl arī derētu visus rezultātus SDL funkcijām pārbaudīt, vai tās neatgriež kļūdas. Vienkāršākajā gadījumā, piemēram, izmantojot assert'us:

Code: Select all

	SDL_Surface* temporary = SDL_LoadBMP(fileName);
	assert(temporary);
	SDL_Surface* optimized = SDL_DisplayFormatAlpha(temporary);
	assert(optimized);
	SDL_FreeSurface(temporary);
	_surface = optimized;
Tāpat arī ifstream'am:

Code: Select all

	 ifstream file(fileName);
	 assert(file.is_open());
Jautājums - kurā vietā kodā tiek izsaukta Level::Load funkcija?

User avatar
kristapuciitis
Posts: 163
Joined: 03 Jun 2011, 14:22

Re: problēma

#15 Post by kristapuciitis » 15 Feb 2012, 20:57

bubu wrote: Tas ka Sprite::Draw trūkst - tas gan dīvaini? Varbūt projekta Debug konfigurācijai ir ieslēgta optimizācija?
Kur tieši tas trūkst? Un kāda optimizācija ieslēgta? I am too noob.
Gooby pls

User avatar
kristapuciitis
Posts: 163
Joined: 03 Jun 2011, 14:22

Re: problēma

#16 Post by kristapuciitis » 15 Feb 2012, 21:06

bubu wrote: Jautājums - kurā vietā kodā tiek izsaukta Level::Load funkcija?
PlatformGmae tā vispār netiek izsaukta, bet pagaidām arī netaisos, jo programma karās pat bez tās izsaukšanas.
Gooby pls

atis
Posts: 57
Joined: 30 Nov 2011, 01:08

Re: problēma

#17 Post by atis » 15 Feb 2012, 21:10

Kas vainas WinMain? Ja studijā linko ar /SUBSYSTEM:WINDOWS argumentu, tad linkeris izmanto WinMain kā programmas entry-point'u, nevis main.
Manuprāt, SDL definē savu WinMain funkciju, kas izsauc lietotāja "main" funkciju.. tas tā, lai būtu portabls risinājums.

User avatar
kristapuciitis
Posts: 163
Joined: 03 Jun 2011, 14:22

Re: problēma

#18 Post by kristapuciitis » 15 Feb 2012, 21:16

Ko jūs rakstat? o.0 Man problēma ir tā, ka programma nepalaižas pat tad, kad netiek izsaukta funkcija Level::Load(const char* fileName). Bet, ja es commentēju visu to Level::Load() funkciju, tad nekādu problēmu nav.
Gooby pls

atis
Posts: 57
Joined: 30 Nov 2011, 01:08

Re: problēma

#19 Post by atis » 15 Feb 2012, 21:29

Nu hz, varētu domāt, ka tev tur ar SDL kaut kas ir salinkojies ne tā, kā vajag. Bet ar vienkāršu skatīšanos kodā un skrīnšotā neko sakarīgu nevaru pateikt. Pati proga kā tāda uz mana kompja strādā vienalga, vai ir Level::Load() vai nav.

Atrodi varbūt internetā kādu SDL piemēru ar gatavu MSVC++ projektu.

Edit: aizmirsu piebilst, ka es viņu būvēju uz MacOSX, neizmantojot visual c++ projekta failus.

bubu
Guru
Guru
Posts: 398
Joined: 07 Dec 2010, 11:54

Re: problēma

#20 Post by bubu » 15 Feb 2012, 22:34

atis wrote:Manuprāt, SDL definē savu WinMain funkciju, kas izsauc lietotāja "main" funkciju.. tas tā, lai būtu portabls risinājums.
Jā tā ir. Es vienk domāju, ka tu brīnies, ka tur izsaucas WinMain, nevis main. Normāli šeit vajadzētu būt WinMain -> SDL_main fjas izsaukumam redzamam.
kristapuciitis wrote:Ko jūs rakstat? o.0 Man problēma ir tā, ka programma nepalaižas pat tad, kad netiek izsaukta funkcija Level::Load(const char* fileName). Bet, ja es commentēju visu to Level::Load() funkciju, tad nekādu problēmu nav.
Palaid programmu debugerī. Soli pa solim izpildi un atrodi rindiņu uz kuras viss apstājas/nokaras/utt...
Es neticu, ka aizkomentējot Level::Load, tad programma strādā. Tas nav iespējams. Jo tu nekur NEIZSAUC Level::Load metodi.

Post Reply

Return to “Iesācējiem / For beginners”