Newsgroup: it.comp.lang.c
Titolo: problema con le SDL

son riuscito a linkarle.. ma ora non riesco a usarle...
ho scaricato dal sito il primo stralcio di codice, giusto per vedere  se
funziano..
#include <stdlib.h>
#include <sdl.h>
main(int argc, char *argv[])
{
    if ( SDL_Init(SDL_INIT_AUDIO|SDL_INIT_VIDEO) < 0 ) {
        fprintf(stderr, "Impossibile inizializzare " \
   "SDL: %s\n", SDL_GetError());
        exit(1);
    }
    atexit(SDL_Quit);
    return 1;
}
( copiato pari pari da 
http://www.libsdl.org/intro.it/usinginit.html
 )
pero' il compilatore reagisce con 3 errori + alcuni warning...
Info :Linking C:\DOCUMENTI\PROVE C\NONAME00.exe
Error:  Error: Unresolved external '_SDL_Init' referenced from module
noname00.c
Error:  Error: Unresolved external '_SDL_GetError' referenced from module
noname00.c
Error:  Error: Unresolved external '_SDL_Quit' referenced from module
noname00.c
Error:  Error: Unresolved external '_main' referenced from module c0nt.ASM
(i warning non mi sembravano niente di particolare.. cmq li metto)
Info :Compiling C:\DOCUMENTI\PROVE C\noname00.c
Warn :  noname00.c(14,2):Parameter 'argc' is never used
Warn :  noname00.c(14,2):Parameter 'argv' is never used
Warn :  noname00.c(15,2):Undefined structure '_SDL_TimerID'
Warn :  noname00.c(15,2):Undefined structure '_SDL_Joystick'
Warn :  noname00.c(15,2):Undefined structure 'SDL_mutex'
Warn :  noname00.c(15,2):Undefined structure 'SDL_semaphore'
Warn :  noname00.c(15,2):Undefined structure 'SDL_cond'
Warn :  noname00.c(15,2):Undefined structure 'private_hwdata'
Warn :  noname00.c(15,2):Undefined structure 'SDL_BlitMap'
Warn :  noname00.c(15,2):Undefined structure 'private_yuvhwfuncs'
Warn :  noname00.c(15,2):Undefined structure 'private_yuvhwdata'
Warn :  noname00.c(15,2):Undefined structure 'WMcursor'
Warn :  noname00.c(15,2):Undefined structure 'SDL_SysWMmsg'

 son riuscito a linkarle.. ma ora non riesco a usarle...
Devi fare una cosa simile a quella che ti abbiamo spiegato
anche per le dll
-- 
Lawrence "Rhymes" Oluyede
http://loluyede.blogspot.com
rhy...@NOSPAMmyself.com

 anche per le dll
scusa se non ti seguo..
per i .h mi avete detto di includere nel path di ricerca del compilatore la
directory che le conteneva e fin qui tutto ok.
ma x le dll cosa devo fare?
ho visto che sotto le sdl c'è una directory "lib" con questi 3 file..
sdl.dll
sdl.lib
sdlmain.lib
ho provato ad aggiungere il path della directory nel path "library" del
compilatore, ma non cambia niente...
grazie x la pazienza!
Fra

 compilatore, ma non cambia niente...
Come hai settato la cosa?


> Come hai settato la cosa?
cliccando su Opzioni -> progetto
viene fuori un menu', la prima voce è directories,
ci sono due tabelle:
"source directories"
e "output directories"
sotto source ci sono:
Include: d:\bc5\include
Library: d:\bc5\lib
Source:
ho sostituito con:
Include: d:\bc5\include;d:\bc5\include\sdl\include
Library: d:\bc5\include\sdl\lib;d:\bc5\lib
Source:

Ok, mi butto, così la smetto di fare il leach.
Ho provato per pura curiosità a usare SDL, però l'ho "installato" sul
dev-cpp. Gli include li ho sbattuti in una sottodirectory della \include
(quindi \include\sdl), le librerie che ho (dal nome diverso, si chiamano
libSDL.a, libSDL.la e libSDLmain.a) si trovano nella classica \lib di
default, mentre la SDL.dll è nella directory di sistema di windows,
tipicamente c:\windows\system32
Bho,  a me compila, e quattrorighe sullo schermo le piazza =)
'sera lietissima, Marco
"FRaNCeSCo" <?@?.?> ha scritto nel messaggio
news:t6C7b.57115$R32.1...@news2.tin.it...


ho scaricato il dev cpp e le sdl x mingw.. i file sono gli stessi che mi hai
detto tu... e li ho messi nelle stesse directory.. ma continua a darmi degli
errori in compilazione... puoi mandarmi il codice che hai usato così faccio
la prova del 9??
grazie mille!
Fra

Il codice che compila e funziona è questo:
#include <stdlib.h>
#include "SDL\SDL.h"
int main(int argc, char *argv[])
{
    if ( SDL_Init(SDL_INIT_VIDEO) < 0 ) {
        fprintf(stderr, "Impossibile inizializzare " \
   "SDL: %s\n", SDL_GetError());
    }
    else fprintf(stderr, "Inizializzazione avvenuta !\n");
  system("Pause");
  return 0
}
Molto, molto complicato, come puoi ben vedere ;-)
Sono andato però a vedere le faq di dev-cpp per sdl, e in questi due link,
ti spiega le cose da fare:
http://cone3d.gamedev.net/cgi-bin/index.pl?page=tutorials/gfxsdl/tut1
o
http://docs.deninet.com/sdl_on_dev_c.htm
In breve, non hai messo delle opzioni di compilazione per linkare le
librerie statiche (immagino). Quindi aggiungi a Progeto -> Opzioni del
progetto -> Parametri -> Linker questa stringa
-lmingw32 -lSDLmain -lSDL -mwindows
A questo punto, se ancora non ti funziona, non saprei proprio il motivo !
'sera lietissima, Marco
"FRaNCeSCo" <?@?.?> ha scritto nel messaggio
news:boU7b.44268$hE5.1...@news1.tin.it...


 'sera lietissima, Marco
ma se hai scritto alle 8.58 del mattino!  ;)
grazie
Fra

 -lmingw32 -lSDLmain -lSDL -mwindows
questo era di sicuro uno dei problemi.. pero' non ha funzionato subito
quando l'ho corretto... si vede che c'ha messo un attimo ad accorgersi che
l'avevo cambiato (!) :)

 -lmingw32 -lSDLmain -lSDL -mwindows
l'ultima opzione omettila seno' ti giochi le configurazioni dei progetti su
cosa vuoi in uscita se un'app da terminale da finestra ecc ...
cmq ricordati sempre che qualsiasi progetto con le SDL richiede le prime 3
librerie linkate in quell'ordine seno' da errori di reference non trovati
...
ciao

 ciao
Ok, lo terrò a mente. Grazie dei consigli

 ma se hai scritto alle 8.58 del mattino!  ;)
Già, e allora ? E' solo una firma =P Mica deve essere qualcosa di vero, deve
solo essere personale, IMHO
'sera lietissima, Marco