Aloitin juuri c ja sdl ohjelmoinnin ja minulla on vaikeuksia saada sdl_gfx toimimaan. sdl:n perus jutut toimii moitteettomasti, mutta tuo lisäkirjastojen käyttäminen on hakusessa. Voisiko joku kertoa juurtajaksaen miten saan tuon sdl_gfx:n toimimaan ohjelmassani. Etenkin rotozoomin käyttöä tarvitsisin. Käytän dev c++:aa.
Saan tälläisen virheilmoituksen:
`SDL_rotozoomSurface' undeclared (first use this function)
Ja älkääkä laittako linkkejä tuohon oppaaseen, sillä se ei auttanut minua. Ja olen googlettanut, mutta en ole löytänyt tarpeeksi yksityiskohtaista tietoa.
Includen avulla kääntäjä tietää, että nuo funktiot ovat olemassa, linkkeriparametria tarvitaan, että ne tulevat oikeasti ohjelmaan mukaankin.
Ohjelmakoodin alkuun siis kuuluu jokseenkin tällainen rivi:
#include <SDL/SDL_rotozoom.h>
Lisäksi projektin asetuksista Linker parameters -laatikosta tai vastaavasta puuttuu oikea asetus, luultavimmin -lSDL_gfx
, joka siis linkittää ohjelmaan tuon kirjaston mukaan.
Tuo include minulla olikin jo, mutta samaa erroria pukkaa vieläkin.
Hm jaa, funktion nimessä ei ole tuota SDL_-etuliitettä.
Kappas vain. Ongelmat eivät ole vieläkään ohi vaan sain vastaani jo seuraavan errorin:
[Linker error] undefined reference to `_imp__rotozoomSurface'
Alkaa mennä jo vähän käsittämättömäksi.
Linkkaa ohjelmaan -lmingw32 -lsdlmain -lsdl -lsdl_gfx
Linkkasin noin ja lisäsin myös dll tiedoston siihen, mutta en ole aivan varma kuuluuko se sinne. Jossain foorumilla näin jonkun .o tiedoston lisättynä sinne, mutta sellaista en omista. Nyt kuitenkin ohjelma kääntyy, mutta kun yritän käynnistää ohjelman saan tälläisen virheilmoituksen:
Sovelluksen alustus epäonnistui (0xc000007b). Lopeta sovellus valitsemalla OK.
DLL-tiedoston kuuluu vain olla ohjelman ajokansiossa (tai muualla PATHissa), jotta Windows sen löytää. Sitä siis ei erityisesti liitetä projektiin. Objektitiedostoa (.o:ta) ei kuulukaan olla.
[Linker error] undefined reference to `_imp__rotozoomSurface'
Tuota erroria puskee silti, vaikka tein tuon TGunnerin ohjeen mukaan. Ja dll tiedostot ovat oikeassa paikassa.
Onks sulla libSDL_gfx.a oikeessa paikassa?
Niin, paha sanoa koska en tiedä mikä on oikea paikka.
Varmaan toisten .a-kavereiden pariin. Kokeile lib-kansioo :-o
Juu siellä se näyttää olevan.
Käys ny uusiks läpi, et miten teet käännösprosessin. Sulla on koodi, siinä oikeet includet ja varmasti käytät oikeeta rotozuumeri-funkkarii? Sit sä meet komentoriville ja käännät: gcc -s -o2 -o ulos.exe sisaan.c -lmingw32 -lsdlmain -lsdl -lsdl_gfx ja se sanoo...?
Samaa erroria ryskii.
Sä teet nyt jotain väärin! Ootko kokeillu kääntää sen sdl_gfx:n devpakin mukana tulevaa esimerkkikoodia, mikä sisältää ton rotozoomerin käytön?
Sain toimimaan vihdoin ja viimein! Poistin koko roskan ja asensin kaiken uusiksi ja lähti toimimaan. En kyllä itsekään tiedä missä kohtaa olin tehnyt virheen, mutta pääasia, että toimii! Kiitos kaikille avuliaille, jotka jaksoivat miettiä ongelmaani.
Aihe on jo aika vanha, joten et voi enää vastata siihen.