Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: [SFML 1.6 + CB] Compiler en statique...  (Lu 4890 fois)

0 Membres et 1 Invité sur ce sujet

Bastienre4

  • Newbie
  • *
  • Messages: 24
    • Voir le profil
[SFML 1.6 + CB] Compiler en statique...
« le: Août 09, 2012, 07:53:29 pm »
Bonjour à vous.  :)

Je cherche désespérément à compiler mon programme en static (j'utilise la SFML 1.6 et apparemment sur les cartes ATI ça marche qu'en statique).

Dans build options -> Linker settings (sur Codeblocks) j'ai mis

-lsfml-graphics-s
-lsfml-window-s
-lsfml-system-s
 

Le souci c'est que maintenant j'ai tout plein d'erreur du genre :

c:\_cpp_\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libsfml-graphics-s.a(Image.o):Image.cpp|| multiple definition of `sf::Image::GetHeight() const'|
c:\_cpp_\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libsfml-graphics.a(d000188.o)|| first defined here|
c:\_cpp_\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libsfml-graphics-s.a(Image.o):Image.cpp|| multiple definition of `sf::Image::SetSmooth(bool)'
|
c:\_cpp_\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libsfml-graphics.a(d000071.o)|| first defined here|
c:\_cpp_\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libsfml-graphics-s.a(Image.o):Image.cpp|| multiple definition of `sf::Image::~Image()'|
c:\_cpp_\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libsfml-graphics.a(d000080.o)|| first defined here|
c:\_cpp_\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libsfml-graphics-s.a(Image.o):Image.cpp|| multiple definition of `sf::Image::LoadFromFile(std::string const&)'
|
c:\_cpp_\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libsfml-graphics.a(d000060.o)|| first defined here|
c:\_cpp_\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libsfml-graphics-s.a(Color.o):Color.cpp|| multiple definition of `sf::Color::Color(unsigned char, unsigned char, unsigned char, unsigned char)'|
c:\_cpp_\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libsfml-graphics.a(d000053.o)|| first defined here|
c:\_cpp_\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libsfml-graphics-s.a(Drawable.o):Drawable.cpp|| multiple definition of `sf::Drawable::~Drawable()'
|
c:\_cpp_\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libsfml-graphics.a(d000162.o)|| first defined here|
c:\_cpp_\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libsfml-graphics-s.a(Drawable.o):Drawable.cpp|| multiple definition of `sf::Drawable::SetPosition(float, float)'|
c:\_cpp_\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libsfml-graphics.a(d000141.o)|| first defined here|

||More errors follow but not being shown.|
||Edit the max errors limit in compiler options...|
||=== Build finished: 50 errors, 0 warnings ===|

En gros, je m'y prend mal  ::)

Comment compiler en Statique avec SFML 1.6 et CodeBlocks?

Merci d'avance ! ^^
« Modifié: Août 09, 2012, 07:55:28 pm par Bastienre4 »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : [SFML 1.6 + CB] Compiler en statique...
« Réponse #1 le: Août 09, 2012, 08:07:28 pm »
Une fois que tu as mis les bibliothèques statiques (en "-s") il faut bien sûr enlever les autres (les dynamiques).
Laurent Gomila - SFML developer

Bastienre4

  • Newbie
  • *
  • Messages: 24
    • Voir le profil
Re : [SFML 1.6 + CB] Compiler en statique...
« Réponse #2 le: Août 09, 2012, 08:40:19 pm »
C'est à dire? Les enlever d'ou? Du dossier Mingw de CB?

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : [SFML 1.6 + CB] Compiler en statique...
« Réponse #3 le: Août 09, 2012, 08:42:12 pm »
Non, de tes linker settings. Là tu as gardé les deux versions (regarde bien les messages d'erreur, ils sont très clairs).
Laurent Gomila - SFML developer

Bastienre4

  • Newbie
  • *
  • Messages: 24
    • Voir le profil
Re : [SFML 1.6 + CB] Compiler en statique...
« Réponse #4 le: Août 09, 2012, 08:52:23 pm »
Excuse moi mais je comprend pas trop (moi pas être très doué  ;D). Dans linker settings j'ai juste les versions -s...  :-\

EDIT : J'ai mis -sfml-graphics-s
-sfml-window-s
-sfml-system-s
Et apparement ça compile, reste a voir si ça marche sur les cartes ATI. Je test.

EDIT 2 : Bah nan, ça marche pas.
« Modifié: Août 09, 2012, 09:04:16 pm par Bastienre4 »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : [SFML 1.6 + CB] Compiler en statique...
« Réponse #5 le: Août 09, 2012, 09:30:31 pm »
J'ai pas ton projet sous les yeux donc je ne peux pas te dire où ça coince, mais l'erreur est très claire regarde :
Citer
c:\_cpp_\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libsfml-graphics.a(d000188.o)|| first defined here|
c:\_cpp_\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libsfml-graphics-s.a(Image.o):Image.cpp|| multiple definition of `sf::Image::SetSmooth(bool)'|

Je vois deux causes possibles :
- essaye un "rebuild all"
- fais attention aux linker settings globaux (tu as Debug, Release mais aussi les deux en même temps, qui du coup s'ajoute à ce que tu mets dans chaque)
Laurent Gomila - SFML developer

Bastienre4

  • Newbie
  • *
  • Messages: 24
    • Voir le profil
Re : [SFML 1.6 + CB] Compiler en statique...
« Réponse #6 le: Août 10, 2012, 11:59:44 am »
Alors effectivement j'avais la version non statique de linkée dans les paramètres globaux.
Du coup ça compile bien, mais le souci c'est que ça marche toujours pas sur les Cartes ATI  :(

Du coup je vais essayer le rebuild all.

Maintenant j'ai toujours tout plein d'erreurs, mais des différentes...

c:\_cpp_\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libsfml-graphics-s.a(Image.o):Image.cpp|| undefined reference to `_Unwind_Resume'|
c:\_cpp_\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libsfml-graphics-s.a(Image.o):Image.cpp|| undefined reference to `_Unwind_Resume'
|
c:\_cpp_\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libsfml-graphics-s.a(Image.o):Image.cpp|| undefined reference to `_Unwind_Resume'|
c:\_cpp_\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libsfml-graphics-s.a(Image.o):Image.cpp|| undefined reference to `_Unwind_Resume'
|
c:\_cpp_\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libsfml-graphics-s.a(Image.o):Image.cpp|| undefined reference to `_Unwind_Resume'|
c:\_cpp_\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libsfml-graphics-s.a(Image.o):Image.cpp|| more undefined references to `_Unwind_Resume'
follow|
c:\_cpp_\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libsfml-graphics-s.a(Image.o):Image.cpp:(.eh_frame+0x12)||undefined reference to `__gxx_personality_v0'|
c:\_cpp_\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libsfml-graphics-s.a(Sprite.o):Sprite.cpp|| undefined reference to `_Unwind_Resume'
|
c:\_cpp_\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libsfml-graphics-s.a(Sprite.o):Sprite.cpp|| undefined reference to `_Unwind_Resume'|
c:\_cpp_\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libsfml-graphics-s.a(Sprite.o):Sprite.cpp:(.text$_ZN2sf6SpriteD0Ev[sf::Sprite::~Sprite()]+0x15d)||undefined reference to `_Unwind_Resume'
|
c:\_cpp_\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libsfml-graphics-s.a(Sprite.o):Sprite.cpp:(.eh_frame+0x12)||undefined reference to `__gxx_personality_v0'|
c:\_cpp_\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libsfml-graphics-s.a(Drawable.o):Drawable.cpp:(.eh_frame+0x11)||undefined reference to `__gxx_personality_v0'
|
c:\_cpp_\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libsfml-graphics-s.a(String.o):String.cpp|| undefined reference to `_Unwind_Resume'|
c:\_cpp_\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libsfml-graphics-s.a(String.o):String.cpp|| undefined reference to `_Unwind_Resume'
|
c:\_cpp_\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libsfml-graphics-s.a(String.o):String.cpp|| undefined reference to `_Unwind_Resume'|
c:\_cpp_\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libsfml-graphics-s.a(String.o):String.cpp|| undefined reference to `_Unwind_Resume'
|
c:\_cpp_\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libsfml-graphics-s.a(String.o):String.cpp|| undefined reference to `_Unwind_Resume'|
c:\_cpp_\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libsfml-graphics-s.a(String.o):String.cpp|| more undefined references to `_Unwind_Resume'
follow|
c:\_cpp_\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libsfml-graphics-s.a(String.o):String.cpp:(.eh_frame+0x12)||undefined reference to `__gxx_personality_v0'|
c:\_cpp_\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libsfml-graphics-s.a(Font.o):Font.cpp|| undefined reference to `_Unwind_Resume'
|
c:\_cpp_\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libsfml-graphics-s.a(Font.o):Font.cpp|| undefined reference to `_Unwind_Resume'|
c:\_cpp_\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libsfml-graphics-s.a(Font.o):Font.cpp|| undefined reference to `_Unwind_Resume'
|
c:\_cpp_\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libsfml-graphics-s.a(Font.o):Font.cpp|| undefined reference to `_Unwind_Resume'|
c:\_cpp_\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libsfml-graphics-s.a(Font.o):Font.cpp|| undefined reference to `_Unwind_Resume'
|
c:\_cpp_\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libsfml-graphics-s.a(Font.o):Font.cpp|| more undefined references to `_Unwind_Resume' follow|
c:\_cpp_\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libsfml-graphics-s.a(Font.o):Font.cpp:(.eh_frame+0x12)||undefined reference to `__gxx_personality_v0'
|
c:\_cpp_\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libsfml-graphics-s.a(RenderTarget.o):RenderTarget.cpp:(.eh_frame+0x11)||undefined reference to `__gxx_personality_v0'|
c:\_cpp_\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libsfml-graphics-s.a(RenderWindow.o):RenderWindow.cpp|| undefined reference to `_Unwind_Resume'
|
c:\_cpp_\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libsfml-graphics-s.a(RenderWindow.o):RenderWindow.cpp|| undefined reference to `_Unwind_Resume'|
c:\_cpp_\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libsfml-graphics-s.a(RenderWindow.o):RenderWindow.cpp|| undefined reference to `_Unwind_Resume'
|
c:\_cpp_\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libsfml-graphics-s.a(RenderWindow.o):RenderWindow.cpp|| undefined reference to `_Unwind_Resume'|
c:\_cpp_\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libsfml-graphics-s.a(RenderWindow.o):RenderWindow.cpp|| undefined reference to `_Unwind_Resume'
|
c:\_cpp_\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libsfml-graphics-s.a(RenderWindow.o):RenderWindow.cpp|| more undefined references to `_Unwind_Resume' follow|
c:\_cpp_\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libsfml-graphics-s.a(RenderWindow.o):RenderWindow.cpp:(.eh_frame+0x12)||undefined reference to
[...]
||More errors follow but not being shown.|
||Edit the max errors limit in compiler options...|
||=== Build finished: 50 errors, 3 warnings ===|
« Modifié: Août 10, 2012, 12:03:18 pm par Bastienre4 »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : [SFML 1.6 + CB] Compiler en statique...
« Réponse #7 le: Août 10, 2012, 12:02:43 pm »
Citer
ça marche toujours pas sur les Cartes ATI
Quel est le problème en fait ? Ca n'a peut-être rien à voir.

Sinon, mon conseil ce serait de passer directement à SFML 2. SFML 1.6 est déjà quasiment obsolète.
Laurent Gomila - SFML developer

Bastienre4

  • Newbie
  • *
  • Messages: 24
    • Voir le profil
Re : [SFML 1.6 + CB] Compiler en statique...
« Réponse #8 le: Août 10, 2012, 12:06:59 pm »
Merci pour ta réponse rapide  :)

Bah le problème c'est que la fenêtre ne se lance pas, tout simplement. Du coup, vu que dans mon programme la fenêtre est l'un des premiers objets instancié, bah le programme reste planté au début, n'avance pas.
D'après mes recherches la fenêtre de la SFML 1.6 aime pas trop les derniers drivers ATI et le seul moyen de faire quand même marcher le programme est de compiler en statique à ce j'ai lu.

Et pour ce projet (qui me sert surtout à m'entrainer), j'utilise beaucoup de fonctions qui ne sont plus dispo aussi simplement (Sprite->GetPixel par exemple x]). Du coup, je passerai à la 2.0 au prochain projet.

Encore merci pour ta rapidité  ;)
« Modifié: Août 10, 2012, 12:09:28 pm par Bastienre4 »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : [SFML 1.6 + CB] Compiler en statique...
« Réponse #9 le: Août 10, 2012, 12:09:25 pm »
En effet ça ressemble au bug ATI. Fais un rebuild all, et vire bien les DLLs SFML pour être sûr que tu es bien sur la version statique.
Laurent Gomila - SFML developer

Bastienre4

  • Newbie
  • *
  • Messages: 24
    • Voir le profil
Re : [SFML 1.6 + CB] Compiler en statique...
« Réponse #10 le: Août 10, 2012, 12:10:46 pm »
Mais le problème c'est que ça compile pas là, même avec un rebuild all  :-[... (cf les messages d'erreur ci-dessus)

Le problème viens surement de moi, mais je vois pas trop ce qui cloche là  >:(

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : [SFML 1.6 + CB] Compiler en statique...
« Réponse #11 le: Août 10, 2012, 12:21:16 pm »
Ah, ben faut pas éditer d'anciens messages, surtout quand il y a eu des réponses après ; il vaut mieux poster à la suite pour être sûr que ça ne passe pas inaperçu.

Tu utilises bien la version de MinGW qui est indiquée dans le tutoriel ? Tu as bien retiré SFML_DYNAMIC des tes preprocessor settings?
Laurent Gomila - SFML developer

Bastienre4

  • Newbie
  • *
  • Messages: 24
    • Voir le profil
Re : [SFML 1.6 + CB] Compiler en statique...
« Réponse #12 le: Août 10, 2012, 12:47:44 pm »
J'ai la version 4.4.1, ça devrais être bon.
Quand au defines oui, j'avais retiré SFML_DYNAMIC (a vrai dire je l'ai jamais mis  :-X).
J'ai aussi essayé de mettre SML_STATIC mais ça marche pas non plus.
« Modifié: Août 10, 2012, 01:36:24 pm par Bastienre4 »

Bastienre4

  • Newbie
  • *
  • Messages: 24
    • Voir le profil
Re : [SFML 1.6 + CB] Compiler en statique...
« Réponse #13 le: Août 10, 2012, 02:15:04 pm »
Alors, par acquis de conscience, j'ai dl la version 4.4 de MinGW (celle du tuto, au lieu de la 4.4.1 que j'avais actuellement).
Et il se trouve que le problème venait de là.

Ces erreurs ont disparues et le programme a enfin compilé correctement, et le programme n'a besoin que de la dll "libgcc_s_dw2-1". Du coup, je suppose que le programme a bien été compilé en statique.
 
Je test avec les cartes ATI histoire de voir si le problème est résolu et je poste les résultats ici même.