PDA

View Full Version : Usare libSDL per un joystick..........


stefanoxjx
11-08-2012, 20:32
Ciao a tutti, premetto che sono anni che non programmo e che in C sotto linux non ho mai fatto nulla, ma per cercare di portare avanti un'idea che mi è passata per la testa, ho iniziato a vedere se riesco ad usare la libreria SDL sotto linux.
La mia intenzione, per facilitarmi la vita era quella di usare gambas ma siccome non trovo info su come gestire un joystick sotto tale linguaggio ho deviato su C per poi una volta capito come funzionano le SDL provare ad usarle su gambas.
Ho quindi iniziato a leggere un pochino qui: http://docs.huihoo.com/sdl/1.2/sdljoystickopen.html e visto che c'ero ho deciso di provare l'esempio che c'è proprio in quella pagina.
Ovviamente non funziona :muro:
Ho modificato un po' l'esempio come segue:

#include "/usr/include/SDL/SDL.h"
#include <stdio.h>

void main()
{
SDL_Joystick *joy;
// Check for joystick
if(SDL_NumJoysticks()>0)
{
// Open joystick
joy=SDL_JoystickOpen(0);

if(joy)
{
printf("Opened Joystick 0\n");
printf("Name: %s\n", SDL_JoystickName(0));
printf("Number of Axes: %d\n", SDL_JoystickNumAxes(joy));
printf("Number of Buttons: %d\n", SDL_JoystickNumButtons(joy));
printf("Number of Balls: %d\n", SDL_JoystickNumBalls(joy));
}
else printf("Couldn't open Joystick 0\n");

// Close if opened
if(SDL_JoystickOpened(0)) SDL_JoystickClose(joy);

}
}


però quando provo a compilare:

$ gcc test.c
/tmp/ccd6Zngk.o: In function `main':
test.c:(.text+0x9): undefined reference to `SDL_NumJoysticks'
test.c:(.text+0x1b): undefined reference to `SDL_JoystickOpen'
test.c:(.text+0x3e): undefined reference to `SDL_JoystickName'
test.c:(.text+0x62): undefined reference to `SDL_JoystickNumAxes'
test.c:(.text+0x84): undefined reference to `SDL_JoystickNumButtons'
test.c:(.text+0xa6): undefined reference to `SDL_JoystickNumBalls'
test.c:(.text+0xd2): undefined reference to `SDL_JoystickOpened'
test.c:(.text+0xe2): undefined reference to `SDL_JoystickClose'
collect2: ld returned 1 exit status


e non riesco a capire cosa non vada.
Sembra quasi che la librearia SDL non corrisponda con le chiamate che ci sono nell'esempio.
Chiedo aiuto da parte di qualche esperto in materia, perchè dopo svariate prove non sono riuscito a capirne nulla :(
Grazie.
Ciao.

Gimli[2BV!2B]
13-08-2012, 12:48
Hai installato la libreria SDL e relative parti di sviluppo, giusto?
Non specifichi la distribuzione, per completezza metto il riferimento ai pacchetti quelle più comuni ed affini ai miei gusti (ovviamente, nel caso ti mancassero, non scaricare da lì, usa il gestore dei pacchetti):

Debian (http://packages.debian.org/sid/libsdl-dev)
Ubuntu (http://packages.ubuntu.com/precise/libsdl-dev)


Devi poi specificare che il tuo programma necessita di linkare con la libreria SDL, prova:gcc -lSDL test.c

gimli@sertan ~/Desktop $ gcc -lSDL test.c
gimli@sertan ~/Desktop $

stefanoxjx
13-08-2012, 12:57
;37937487']Hai installato la libreria SDL e relative parti di sviluppo, giusto?
Non specifichi la distribuzione, per completezza metto il riferimento ai pacchetti quelle più comuni ed affini ai miei gusti (ovviamente, nel caso ti mancassero, non scaricare da lì, usa il gestore dei pacchetti):

Debian (http://packages.debian.org/sid/libsdl-dev)
Ubuntu (http://packages.ubuntu.com/precise/libsdl-dev)


Devi poi specificare che il tuo programma necessita di linkare con la libreria SDL, prova:gcc -lSDL test.c

gimli@sertan ~/Desktop $ gcc -lSDL test.c
gimli@sertan ~/Desktop $

Scusa, hai ragione; la distro è una ubuntu lts 10.04 e ti confermo che avevo già provveduto ad installare la librearia da te indicata.
Comunque, con il tuo consiglio ho fatto un passo in avanti, nel senso che con gcc -lSDL riesco a compilare senza errori.
Poi il programma non mi printa niente a video ma questa è un altra storia che ora mi vedrò con un po' di calma :)
Grazie, mi sei stato veramente utile............ero inchiodato su questa rogna :mc:

Ciao.