2010-03-27 19 views
5

J'essaie d'utiliser la bibliothèque SDL_Image et j'ai ajouté le fichier .so à la liste des bibliothèques de liens de mon projet (j'utilise Code :: Blocks, par le façon).Erreur de lien C++ Image SDL - impossible de lire les symboles

Après avoir fait cela, quand je vais compiler, je reçois cette erreur:

Linking console executable: bin/Debug/ttfx 
/usr/lib32/libSDL_image-1.2.so: could not read symbols: File in wrong format 

Qu'est-ce que cela signifie et comment puis-je le faire fonctionner?

Editer: J'utilise gcc.

Merci!

Répondre

5

Au cours de l'étape de liaison, il existe des incompatibilités puisque certains de vos fichiers objet ont été compilés pour 32 bits et certains pour 64 bits. En regardant son chemin libSDL_image.so a probablement été compilé pour 32 bits.

Si vous utilisez le compilateur GNU, ajoutez -m32 à votre CXXFLAGS pour compiler également vos objets en 32 bits.

+1

Comment ajouterais-je cela à mon CXXFLAGS? Serait-ce près d'où j'ai ajouté ce fichier à ma liste de bibliothèques de liens? –

+1

@Matt: Je n'utilise pas 'codeblocks' moi-même, mais cette section dans les docs semble détailler ce que l'on doit faire http://wiki.codeblocks.org/index.php?title=Developing_32_bit_apps_under_64_bit_Linux_(Ubuntu)#Setting_the_build_options_in_Code :: Blocs –

+0

@MatthewH as-tu trouvé comment l'ajouter au CXXFLAGS? Pouvez-vous me dire comment cela se fait? – Black

1

This link et this one suggèrent que le problème est que vous faites une compilation 64 bits avec une bibliothèque 32 bits. YMMV