# Sdl



## mercatp (24 Mai 2008)

Bonjour,

J'ai réalisé des jeux sur Mac OSX 10.3 en utilisant SDL (voir http://sourceforge.net/projects/scoutgame pour un exemple), mais impossible de compiler en mode deployment !
Meme avec un code extremement simple, en C, ça compile bien en mode development mais en mode deployment j'ai l'erreur :
ld: /usr/lib/gcc/darwin/3.3/libgcc.a(_fixunssfdi.o) illegal reference to symbol: ___cmpdi2 defined in indirectly referenced dynamic library /usr/lib/libgcc_s.1.dylib

Quelqu'un sait-il à quoi est dû cette erreur ?

Merci d'avance !


----------



## tatouille (24 Mai 2008)

mercatp a dit:


> Bonjour,
> 
> J'ai réalisé des jeux sur Mac OSX 10.3 en utilisant SDL (voir http://sourceforge.net/projects/scoutgame pour un exemple), mais impossible de compiler en mode deployment !
> Meme avec un code extremement simple, en C, ça compile bien en mode development mais en mode deployment j'ai l'erreur :
> ...



gcc 3.3 tu mixes les liens une ref used  manque un lien dynamic
tu mixes quelque chose une lib qui ne correspond pas au target

a classer ds prob de newbie gcc/ld et non SDL


----------



## mercatp (24 Mai 2008)

Pourtant, quand je compile en mode Deployment sans utiliser SDL ça marche !
Il me semble avoir installé Xcode 1.5 normalement, donc je trouve cette erreur bizard.
Que dois-je faire pour que ça compile correctement ?
Merci.


----------



## mercatp (24 Mai 2008)

J'ai aussi essayé de compiler en ligne de commande, et j'obtiens exactement la meme erreur:

gcc -x objective-c -lobjc -bind_at_load -o test SDLMain.m main.m -framework Cocoa -framework SDL
ld: /usr/lib/gcc/darwin/3.3/libgcc.a(_fixunssfdi.o) illegal reference to symbol: ___cmpdi2 defined in indirectly referenced dynamic library /usr/lib/libgcc_s.1.dylib
make: *** [test] Error 1

sachant que main.m contient:

#import <Cocoa/Cocoa.h>
#import <SDL/SDL.h>

int main(int argc, char *argv[])
{
    return NSApplicationMain(argc,  (const char **) argv);
}

et SDLMain.m et SDLMain.h sont les fichiers fournit avec la SDL (je n'y ai pas touché).


----------



## Didier Guillion (25 Mai 2008)

Selectionne le mode deployment
Dans la liste de gauche, clique sur les differentes libraires et dans la liste de droite verifie qu'elles ont toutes la petite case bleue cochée.

Cordialement


----------



## mercatp (25 Mai 2008)

Merci
En cochant le framework Foundation en plus, je n'ai plus l'erreur précédente. Mais malheureusement j'en ai une autre:

ld: warning prebinding disabled because dependent library: @executable_path/../Frameworks/SDL_ttf.framework/Versions/A/SDL_ttf is not prebound
ld: /usr/lib/gcc/darwin/3.3/libstdc++.a(eh_exception.o) illegal reference to symbol: operator delete(void*) defined in indirectly referenced dynamic library /usr/lib/libstdc++.6.dylib


----------



## Didier Guillion (25 Mai 2008)

mercatp a dit:


> Merci
> En cochant le framework Foundation en plus, je n'ai plus l'erreur précédente. Mais malheureusement j'en ai une autre:
> 
> ld: warning prebinding disabled because dependent library: @executable_path/../Frameworks/SDL_ttf.framework/Versions/A/SDL_ttf is not prebound
> ld: /usr/lib/gcc/darwin/3.3/libstdc++.a(eh_exception.o) illegal reference to symbol: operator delete(void*) defined in indirectly referenced dynamic library /usr/lib/libstdc++.6.dylib



Tu es sur que toutes les cases bleues sont cochées ?

Cordialement


----------



## mercatp (25 Mai 2008)

Hourra !!!
J'ai reussi !
Il m'a suffit de changer le "Cross-Develop Using Target SDK" de Current Mac OS à MacOSX10.2.8 (et d'ajouter les framework au bon endroit).

Pour répondre à Didier Guillion : oui j'ai bien coché toutes les cases bleues.

Merci à tous pour vos réponses !


----------

