Kirjoittaja Aihe: sdl_gfx [ratkaistu (suurinpiirtein)]  (Luettu 6225 kertaa)

Pörzi

  • Käyttäjä
  • Viestejä: 99
    • Profiili
    • http://fugufish.dy.fi/
sdl_gfx [ratkaistu (suurinpiirtein)]
« : 10.06.07 - klo:12.46 »
Eli siis asennuksessa ongelmia.  :-[ Kun ei muuten tuntunut onnistuvan, kokeilin jopa ladata rpm:n ja alienilla muuttaa, mutta vaikka sen sillä tavalla asentelin, ei siltikään toiminut. Käyttis Kubuntu ja tarkoitus olisi käyttää KDevelopia. SDL toimii kyllä, mutta:

/home/a/sdl/src/sdl.cpp:2:31: error: SDL_gfxPrimitives.h: No such file or directory

Eli ilmeisesti asennus ei ihan onnistunut.
Tässä koodi, jota koitin kääntää:
Koodia: [Valitse]
#include "SDL.h"
#include <SDL_gfxPrimitives.h>

int main()
{

bool run=1;

SDL_Init(SDL_INIT_VIDEO);
SDL_Surface *screen = SDL_SetVideoMode(400,300,32, SDL_HWSURFACE|SDL_DOUBLEBUF);


//pääluuppi
while (run)
{
SDL_FillRect(screen, NULL, 0);

lineRGBA(screen, 10, 10, 150, 200, 255, 255, 0, 255);

SDL_Flip(screen);

//Lopetus
SDL_Event event;
while(SDL_PollEvent(&event))
{
if (event.type==SDL_QUIT) run=0;
if (event.type==SDL_KEYDOWN && event.key.keysym.sym== SDLK_ESCAPE)run=0;
}

}

return EXIT_SUCCESS;
}

Ja tässä vielä asennusyritykseni.  :P

Koodia: [Valitse]
poistettu taitaa olla turha... asennus kai onnistui sittenkin.
« Viimeksi muokattu: 11.06.07 - klo:21.44 kirjoittanut Pörzi »

tn

  • Käyttäjä
  • Viestejä: 472
    • Profiili
Vs: sdl_gfx
« Vastaus #1 : 10.06.07 - klo:18.48 »
Ensinnäkin: Asenna ne kirjastot ihan pakettienhallinnan kautta. Eli sinulla tulisi olla asennettuna ainakin paketit libsdl1.2-dev sekä libsdl-gfx1.2-dev.

Toiseksi: Ohjelman alussa yrität include:lla sisällyttää kirjastojen otsikkotiedostoja näin:
Koodia: [Valitse]
#include "SDL.h"
#include <SDL_gfxPrimitives.h>
Muuta ne näin:
Koodia: [Valitse]
#include <SDL/SDL.h>
#include <SDL/SDL_gfxPrimitives.h>

Kolmanneksi: Muistathan myös linkittää SDL:n ja SDL_gfx:n mukaan käännösvaiheessa. Eli linkkerille parametreiksi:
Koodia: [Valitse]
-lSDL -lSDL_gfx

Pörzi

  • Käyttäjä
  • Viestejä: 99
    • Profiili
    • http://fugufish.dy.fi/
Vs: sdl_gfx
« Vastaus #2 : 10.06.07 - klo:20.19 »
Ensinnäkin: Asenna ne kirjastot ihan pakettienhallinnan kautta. Eli sinulla tulisi olla asennettuna ainakin paketit libsdl1.2-dev sekä libsdl-gfx1.2-dev.

Toiseksi: Ohjelman alussa yrität include:lla sisällyttää kirjastojen otsikkotiedostoja näin:
Koodia: [Valitse]
#include "SDL.h"
#include <SDL_gfxPrimitives.h>
Muuta ne näin:
Koodia: [Valitse]
#include <SDL/SDL.h>
#include <SDL/SDL_gfxPrimitives.h>

Kolmanneksi: Muistathan myös linkittää SDL:n ja SDL_gfx:n mukaan käännösvaiheessa. Eli linkkerille parametreiksi:
Koodia: [Valitse]
-lSDL -lSDL_gfx
No nyt antaa näin:
Koodia: [Valitse]
cd '/home/a/sdl/debug' && WANT_AUTOCONF_2_5="1" WANT_AUTOMAKE_1_6="1" make -k
make all-recursive
Making all in src
linking sdl (g++)
linking sdl (g++)
sdl.o: In function `main':
/home/a/sdl/src/sdl.cpp:18: undefined reference to `lineRGBA'
collect2: ld returned 1 exit status
make[2]: *** [sdl] Error 1
make[2]: Target `all' not remade because of errors.
make[2]: Nothing to be done for `all-am'.
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2
*** Exited with status: 2 ***
Eli luulisin tuon oleven edelleen kiinni linkkerista. Koitin kyllä project optionseihin laittaa Configure options->linker flag kohtaan laittaa tuon: -lSDL -lSDL_gfx, mutta sillä ei tunnu olevan vaikutusta.

Jos taas koitan kääntää "käsin", tulee valitusta kirjastoista:

Koodia: [Valitse]
a@a-desktop:~/sdl/src$ g++ sdl.cpp -o sdl -lSDL -lSDL_gfx
In file included from sdl.cpp:2:
/usr/local/include/SDL/SDL_gfxPrimitives.h:17:17: error: SDL.h: No such file or directory
sdl.cpp:33:2: warning: no newline at end of file

edit: Niin siis siitä pakettienhallinnasta. Asensin SDL:n pakettienhallinnasta, mutta sdl_gfx:ää en sieltä löytänyt. Nyt kuitenkin, kun katsoin Synapticilla, näkyy ainakin tällaisi asennettuna:
libsdl1.2debian
libsdl-gfx1.2-4
sdl-gfx
« Viimeksi muokattu: 10.06.07 - klo:20.24 kirjoittanut Pörzi »

mgronber

  • Käyttäjä
  • Viestejä: 1458
    • Profiili
Vs: sdl_gfx
« Vastaus #3 : 10.06.07 - klo:20.39 »
edit: Niin siis siitä pakettienhallinnasta. Asensin SDL:n pakettienhallinnasta, mutta sdl_gfx:ää en sieltä löytänyt. Nyt kuitenkin, kun katsoin Synapticilla, näkyy ainakin tällaisi asennettuna:
libsdl1.2debian
libsdl-gfx1.2-4
sdl-gfx

Sitten kun asennat niistä myös dev-versiot niin onnistumistodennäköisyys kasvaa kohisten.

Pörzi

  • Käyttäjä
  • Viestejä: 99
    • Profiili
    • http://fugufish.dy.fi/
Vs: sdl_gfx
« Vastaus #4 : 10.06.07 - klo:20.49 »
Sitten kun asennat niistä myös dev-versiot niin onnistumistodennäköisyys kasvaa kohisten.
Katos ärkele!  ;D Kiitos! Juu tuosta sdl:stä minulla devi olikin,mutte ei sdl_gfx:stä. Sitä sitten metsästämään. (netistä pitää etsiä, kun ei tuolta valmiiksi löydy)

Edit:
Noniin asensin nyt sen sdl_gfx develin ja se näkyy myös Synapticilla:
sdl-gfx-devel   2.0.13-2   Libraries and includes to develop SDL_gfx programs

Edelleen tulee:
cd '/home/a/sdl/debug' && WANT_AUTOCONF_2_5="1" WANT_AUTOMAKE_1_6="1" make -k
make all-recursive
Making all in src
linking sdl (g++)
linking sdl (g++)
sdl.o: In function `main':
/home/a/sdl/src/sdl.cpp:18: undefined reference to `lineRGBA'
collect2: ld returned 1 exit status
make[2]: *** [sdl] Error 1
make[2]: Target `all' not remade because of errors.
make[2]: Nothing to be done for `all-am'.
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2
*** Exited with status: 2 ***
« Viimeksi muokattu: 10.06.07 - klo:21.05 kirjoittanut Pörzi »

mgronber

  • Käyttäjä
  • Viestejä: 1458
    • Profiili
Vs: sdl_gfx
« Vastaus #5 : 10.06.07 - klo:22.43 »
Sitten kun asennat niistä myös dev-versiot niin onnistumistodennäköisyys kasvaa kohisten.
Katos ärkele!  ;D Kiitos! Juu tuosta sdl:stä minulla devi olikin,mutte ei sdl_gfx:stä. Sitä sitten metsästämään. (netistä pitää etsiä, kun ei tuolta valmiiksi löydy)

Arvaa kaksi kertaa mitä paketti libsdl-gfx1.2-dev sisältää... ;)

Pörzi

  • Käyttäjä
  • Viestejä: 99
    • Profiili
    • http://fugufish.dy.fi/
Vs: sdl_gfx
« Vastaus #6 : 10.06.07 - klo:23.33 »
No asensin nyt tuon sdl-gfx1.2-devin tuolta sinun antamastasi linkistä. Edelleen sama ongelma:

cd '/home/a/sdl/debug/./src' && WANT_AUTOCONF_2_5="1" WANT_AUTOMAKE_1_6="1" make -k sdl
linking sdl (g++)
linking sdl (g++)
sdl.o: In function `main':
/home/a/sdl/src/sdl.cpp:18: undefined reference to `lineRGBA'
collect2: ld returned 1 exit status
make: *** [sdl] Error 1
*** Exited with status: 2 ***

Kummallista, ettei se tunnista tuota lineRGBA:ta, vaikkei annakkaan mitään muuta erroria. Eli siis vaikuttaa siltä, että includet ovat onnistuneet jne. Mutta silti ei vaan toimi.

Edit:
ja koodihan siis on:
Koodia: [Valitse]
#include <SDL/SDL.h>
#include <SDL/SDL_gfxPrimitives.h>

int main()
{

bool run=1;

SDL_Init(SDL_INIT_VIDEO);
SDL_Surface *screen = SDL_SetVideoMode(400,300,32, SDL_HWSURFACE|SDL_DOUBLEBUF);


//pääluuppi
while (run)
{
SDL_FillRect(screen, NULL, 0);

lineRGBA(screen, 10, 10, 150, 200, 255, 255, 0, 255);

SDL_Flip(screen);

//Lopetus
SDL_Event event;
while(SDL_PollEvent(&event))
{
if (event.type==SDL_QUIT) run=0;
if (event.type==SDL_KEYDOWN && event.key.keysym.sym== SDLK_ESCAPE)run=0;
}

}

return EXIT_SUCCESS;
}

janne

  • Käyttäjä
  • Viestejä: 5150
    • Profiili
Vs: sdl_gfx
« Vastaus #7 : 11.06.07 - klo:00.05 »
linking sdl (g++)
linking sdl (g++)
sdl.o: In function `main':
/home/a/sdl/src/sdl.cpp:18: undefined reference to `lineRGBA'
collect2: ld returned 1 exit status

käännös onnistuu, mutta linkkeri valittaa...

Kummallista, ettei se tunnista tuota lineRGBA:ta, vaikkei annakkaan mitään muuta erroria. Eli siis vaikuttaa siltä, että includet ovat onnistuneet jne. Mutta silti ei vaan toimi.

niin, käännösaikana riittää, että funktio on esitelty jossain ennen sen käyttämistä, kutta jotta onhelman voisi linkata siten, että siitä saisi jotain toimivaakin aikaiseksi, pitää funktiolle löytyä myös toteutus. kaikesta päätellen sitä ei nyt löydy.

kai sinä linkkasit mukaan ne SDl-kirjastot, kuten tn tuolla aiemmin kehoitti?

ja koodihan siis on:

tuolla ei sinänsä ole enää väliä, sillä koodi kääntyy ainakin ilman virheitä. enemmän tässä vaikuttanee se, miten sinä yrität kääntää ja linkata tuota koodia.
Janne

Pörzi

  • Käyttäjä
  • Viestejä: 99
    • Profiili
    • http://fugufish.dy.fi/
Vs: sdl_gfx
« Vastaus #8 : 11.06.07 - klo:09.38 »
niin, käännösaikana riittää, että funktio on esitelty jossain ennen sen käyttämistä, kutta jotta onhelman voisi linkata siten, että siitä saisi jotain toimivaakin aikaiseksi, pitää funktiolle löytyä myös toteutus. kaikesta päätellen sitä ei nyt löydy.

kai sinä linkkasit mukaan ne SDl-kirjastot, kuten tn tuolla aiemmin kehoitti?
Siis olen laittanut KDevelopissa: Project -> Project Options -> Configure Options -> Linker flags (LDFLAGS) : -lSDL -lSDL_gfx

En sitten tiedä, mitä muuta linkkerille pitäisi tunkea.

mgronber

  • Käyttäjä
  • Viestejä: 1458
    • Profiili
Vs: sdl_gfx
« Vastaus #9 : 11.06.07 - klo:15.10 »
Siis olen laittanut KDevelopissa: Project -> Project Options -> Configure Options -> Linker flags (LDFLAGS) : -lSDL -lSDL_gfx

En sitten tiedä, mitä muuta linkkerille pitäisi tunkea.

Minä nyt kokeilin kääntää tuon sorsasi komentoriviltä ja käännös onnistui ongelmitta komennolla
Koodia: [Valitse]
$ g++ -lSDL -lSDL_gfx main.c

Pörzi

  • Käyttäjä
  • Viestejä: 99
    • Profiili
    • http://fugufish.dy.fi/
Vs: sdl_gfx
« Vastaus #10 : 11.06.07 - klo:16.08 »
Siis olen laittanut KDevelopissa: Project -> Project Options -> Configure Options -> Linker flags (LDFLAGS) : -lSDL -lSDL_gfx

En sitten tiedä, mitä muuta linkkerille pitäisi tunkea.

Minä nyt kokeilin kääntää tuon sorsasi komentoriviltä ja käännös onnistui ongelmitta komennolla
Koodia: [Valitse]
$ g++ -lSDL -lSDL_gfx main.c

Minulla antaa:
a@a-desktop:~/Desktop$ g++ -lSDL -lSDL_gfx main.c
In file included from main.c:2:
/usr/local/include/SDL/SDL_gfxPrimitives.h:17:17: error: SDL.h: No such file or directory
main.c:33:2: warning: no newline at end of file

Eli siis ilmeisesti se on nyt jostain saanut päähänsä etsiä kirjastoja usr/local/include/SDL kansiosta. Siellä on kyllä SDL_gfx:n filuja, muttei SDL:n. Molempien filut löytyisivät usr/include/SDL -kansiosta.

Kokeilin siirtää SDL.h:n tuonne local... kansioon. Se poisti kyllä tämän ongelman, mutta sitten tuli (tietysti) erroreita includen sisällä.

mgronber

  • Käyttäjä
  • Viestejä: 1458
    • Profiili
Vs: sdl_gfx
« Vastaus #11 : 11.06.07 - klo:17.46 »
Tällä hetkellä sinulla lienee käsin asennetut ja paketinhallinnan kautta asennetut paketit eri paikoissa ja se aiheuttanee ongelmia.

Asennapa sdl:n dev-paketit uudelleen jos se vaikka auttaisi...

Toinen mahdollisesti auttava temppu on poistaa hakemisto /usr/local/include/SDL ja tiedostot /usr/local/lib/libSDL*.

Pörzi

  • Käyttäjä
  • Viestejä: 99
    • Profiili
    • http://fugufish.dy.fi/
Vs: sdl_gfx
« Vastaus #12 : 11.06.07 - klo:20.33 »
Tällä hetkellä sinulla lienee käsin asennetut ja paketinhallinnan kautta asennetut paketit eri paikoissa ja se aiheuttanee ongelmia.

Asennapa sdl:n dev-paketit uudelleen jos se vaikka auttaisi...

Toinen mahdollisesti auttava temppu on poistaa hakemisto /usr/local/include/SDL ja tiedostot /usr/local/lib/libSDL*.
Noita sdl_gfx paketteja olin itsekin jo uudelleenasennellut, mutta eipä tullut mieleen, että tietysti se pitääkin olla sdl:n paketit, eikä sdl-gfx:n.

Kiitos paljon avusta kaikille auttaneille!
Ehkäpä näillä eväillä pääsen jo vähän eteenpäin.  :)

Noniin sitten enää kaksi pientä ongelmaa (pientä, koska pärjään ilmankin) eli siis mitäs tuo:
main.c:33:2: warning: no newline at end of file
tarkoittaa... Sehän on siis vaan varoitus, mutta olisi kiva tietää, mitä se tarkoittaa ja miten sen välttää. (sellaisen se antaa, kun koodini käännän)

Ja toinen vähän isompi ongelma eli mites saisin myös KDevelopin toimimaan? Eli siis sehän herjaa:
/home/a/sdl/src/sdl.cpp:18: undefined reference to `lineRGBA'
Luulisin vian olevan linkkerin asetuksissa... mutta olen sinne projektin asetuksiin nuo -lSDL -lSDL_gfx laittanut, enkä löydä mitään muuta järkevän tuntuista paikkaa, minne niitä tunkisin.

mgronber

  • Käyttäjä
  • Viestejä: 1458
    • Profiili
Vs: sdl_gfx
« Vastaus #13 : 11.06.07 - klo:21.15 »
Noniin sitten enää kaksi pientä ongelmaa (pientä, koska pärjään ilmankin) eli siis mitäs tuo:
main.c:33:2: warning: no newline at end of file
tarkoittaa... Sehän on siis vaan varoitus, mutta olisi kiva tietää, mitä se tarkoittaa ja miten sen välttää. (sellaisen se antaa, kun koodini käännän)

Hyviin tapoihin kuuluu että viimeisen koodirivin perässä on rivinvaihto. Jotkut editorit lisäävät sen viimeiselle riville automaattisesti, toisissa taas täytyy jättää (vähintään) yksi tyhjä rivi tiedoston loppuun.

Lainaus
Ja toinen vähän isompi ongelma eli mites saisin myös KDevelopin toimimaan?

En käytä joten en kommentoi. Itse suosin komentoriviä ja Makefileä.

tn

  • Käyttäjä
  • Viestejä: 472
    • Profiili
Vs: sdl_gfx [ratkaistu (suurinpiirtein)]
« Vastaus #14 : 11.06.07 - klo:22.44 »
Ja toinen vähän isompi ongelma eli mites saisin myös KDevelopin toimimaan? Eli siis sehän herjaa:
/home/a/sdl/src/sdl.cpp:18: undefined reference to `lineRGBA'
Luulisin vian olevan linkkerin asetuksissa... mutta olen sinne projektin asetuksiin nuo -lSDL -lSDL_gfx laittanut, enkä löydä mitään muuta järkevän tuntuista paikkaa, minne niitä tunkisin.
Yksi juttu, jota kannattaa kokeilla, on vaihtaa linkkeriparametrien järjestystä. Se vaikuttaa joskus, niin kummalta kuin se kuulostaakin.

Pörzi

  • Käyttäjä
  • Viestejä: 99
    • Profiili
    • http://fugufish.dy.fi/
Vs: sdl_gfx [ratkaistu (suurinpiirtein)]
« Vastaus #15 : 12.06.07 - klo:09.38 »
Yksi juttu, jota kannattaa kokeilla, on vaihtaa linkkeriparametrien järjestystä. Se vaikuttaa joskus, niin kummalta kuin se kuulostaakin.
Ei vaikuttanut.