Forum: Får felmeddelande av kod från guide. C++ och SDL i Linux.

Forum huvudsida -> Programmering -> Får felmeddelande av kod från guide. C++ och SDL i Linux.

Sidor: 1

Till botten

epaaj 14:06 - 22:a Maj 2007 | Post #1
Medlem
Inlägg: 4


Skicka PM
Håller på att läsa lite om SDL i guiden på http://www.blinkenlights.se/articles/grafikmedsdl/part4/

När jag ska kompilera koden i zip-filen får jag meddelandena:

  1. g++ main.cpp CAnimation.cpp -o zzz_SDL-0.1 -I/usr/include/SDL -D_REENTRANT -L/usr/lib -Wl,-rpath,/usr/lib -lSDL -lpthread -lSDL_image
  2. In file included from main.h:17,
  3. from main.cpp:1:
  4. CAnimation.h:15: error: ISO C++ forbids declaration of `Init' with no type
  5. CAnimation.h:16: error: ISO C++ forbids declaration of `Draw' with no type
  6. In file included from main.h:17,
  7. from CAnimation.cpp:1:
  8. CAnimation.h:15: error: ISO C++ forbids declaration of `Init' with no type
  9. CAnimation.h:16: error: ISO C++ forbids declaration of `Draw' with no type
  10. CAnimation.cpp:13: error: ISO C++ forbids declaration of `Init' with no type
  11. CAnimation.cpp:61: error: ISO C++ forbids declaration of `Draw' with no type
  12. make: *** [MyProgram] Error 1


Jag använder G++ version 3.3.4 i Slackware 10.1 och delen innan i guiden funkade utan större problem.
Jag är osäker på om min Makefile är rätt:

  1. SDL_CFLAGS := $(shell sdl-config --cflags)
  2. SDL_LDFLAGS := $(shell sdl-config --libs)
  3. AppName = zzz_SDL
  4. AppVersion = 0.1
  5. MyProgram: main.cpp CAnimation.cpp
  6. g++ main.cpp CAnimation.cpp -o $(AppName)-$(AppVersion) ${SDL_CFLAGS} ${SDL_LDFLAGS} -lSDL_image


Vad gör jag fel?


Senast redigerad 14:49 - 22:a Maj 2007


Independence 17:23 - 22:a Maj 2007 | Post #2
Administratör
Inlägg: 1800


Skicka PM
Har du installerat SDL-image?

-------------------------

Vi är riddarna som säger fiskbulle!





epaaj 17:33 - 22:a Maj 2007 | Post #3
Medlem
Inlägg: 4


Skicka PM
Inte själv. Men jag gissade att den skulle finnas förinstallerad precis som SDL verkade göra. Kanske den inte gjorde, men jag hade förväntat mig något meddelande som talade om det i så fall.

Enligt http://packages.slackware.it/search.php?v=10.1&t=2&q=sdl_image
så verkar jag inte ha .h filen i alla fall =/

  1. sdl-1.2.8-i486-1 in slackware/l
  2. /usr/doc/sdl_image-1.2.3/
  3. /usr/doc/sdl_image-1.2.3/README
  4. /usr/doc/sdl_image-1.2.3/CHANGES
  5. /usr/doc/sdl_image-1.2.3/COPYING
  6. /usr/lib/libsdl_image.la


är enda som hittas. Får väl ta och installera manuellt och se om det hjälper.


EDIT: Får fortfarande samma efter att ha installerat paketet jag hittade: http://www.linuxpackages.net/pkg_details.php?id=7357


Senast redigerad 17:37 - 22:a Maj 2007


Smygis 16:32 - 23:e Maj 2007 | Post #4
Medlem
Inlägg: 90


Skicka PM
Du måste ha dev paketen.
typ sdl-1.2.8-dev

-------------------------
Ingen signatur! <- OMG! Jag har inte någon signatur! Ge mig en signatur FFS!



Tesuki 18:00 - 23:e Maj 2007 | Post #5
Medlem
Inlägg: 122


Skicka PM
enlight felmedelandena så är det inget med saknad av SDL, för det verkar vara saknad av syntax (samma som jag fick när jag gjorde samma sak på Windows första gången) allt jag gjorde var att jag skrev "int" framför alla förekomster av funktionsdeklarationerna "Init" och "Draw" (och i cpp filen där man skriver vad funktionerna gör) och sedan efter det skrev jag "return 0" i slutet av varje funktion.
det löste det för mig iallafall (för 2 årsedan)




Nissebosselasse 18:21 - 23:e Maj 2007 | Post #6
Medlem
Inlägg: 490


Skicka PM
Felet ligger i följande (CAnimation.h):

class CAnimation
{
public:
    CAnimation (SDL_Surface *dest);
    Init(const char* path);
    Draw(int x, int y);

Metoderna Init och Draw har inga typer, vilket är fel (som kompilatorn så fint säger).
Tesuki har alltså rätt i det han säger. Du skulle dock kunna deklarera metoderna som void, och strunta i return-satsen.

Någon borde uppdatera den artikeln och dess filer...?

-------------------------
http://pushingcows.se
Gula Nallen



Independence 19:03 - 23:e Maj 2007 | Post #7
Administratör
Inlägg: 1800


Skicka PM
,,r det några mer dumma fel i koden här som jag borde fixa när jag ändå är igång och pillar på zip-filen?

Edit: Orkade inte vänta längre så jag slänge ihop en ny zip-fil med tillrättad kollkod, lade även med makefilen i arkivet.

-------------------------

Vi är riddarna som säger fiskbulle!



Senast redigerad 19:12 - 23:e Maj 2007


epaaj 13:44 - 24:e Maj 2007 | Post #8
Medlem
Inlägg: 4


Skicka PM
Tackar. Funkar ganska bra nu =)

En sak som jag inte får att funka är dock index.ini. Om jag bara packar upp och kompilerar så funkar det bra. Men när jag börjar pilla i index.ini filen för att lägga till bilder så skiter sig allt. Kan inte ens ta bort de raderna jag la till för att det ska funka.

Får meddelandena
Error opening file: Animation/index.ini
Could not load animation

Använder nano för att redigera filen. Den säger nåt om att filen är i DOS format "[Read 3 lines (Converted from DOS format) ]" står det när jag öppnar filen. Har det något med det att göra? Att nano inte klarar att spara filen som den ska vara för att det ska funka?


Senast redigerad 13:47 - 24:e Maj 2007


derfian 14:15 - 24:e Maj 2007 | Post #9
Medlem
Inlägg: 149


Skicka PM
    Citat av epaaj:
Använder nano för att redigera filen. Den säger nåt om att filen är i DOS format "[Read 3 lines (Converted from DOS format) ]" står det när jag öppnar filen. Har det något med det att göra? Att nano inte klarar att spara filen som den ska vara för att det ska funka?


Det betyder bara att du har DOS/Windows-stil på dina radslut. Unix använder \n som tecken för ny rad, Apple använder \r och DOS/Windows använder då naturligtvis \r\n.

Nej, det är inget som borde påverka.


Senast redigerad 14:17 - 24:e Maj 2007


epaaj 14:46 - 24:e Maj 2007 | Post #10
Medlem
Inlägg: 4


Skicka PM
Ok, nu funkar det. Vet inte vad som blev fel. Men något var det i alla fall =S




Sidor: 1

Forum huvudsida -> Programmering -> Får felmeddelande av kod från guide. C++ och SDL i Linux.
Atom feed

Du får inte posta i den här tråden | Till toppen