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

Auteur Sujet: [windows] compilation en ligne de commande  (Lu 10409 fois)

0 Membres et 6 Invités sur ce sujet

Jairard

  • Newbie
  • *
  • Messages: 23
    • Voir le profil
    • E-mail
Re : [windows] compilation en ligne de commande
« Réponse #15 le: Août 01, 2013, 08:52:45 pm »
Je ne suis pas sûr de comment lier une bibliothèque de manière statique. Du coup j'ai juste rajouté -static en option et -s au nom de chaque bibliothèque, mais sans succès  :-\

Sortie de compilation :
g++ -o test-s main.cpp -static -LC:/Library/SFML-2.1/lib -lsfml-graphics-s -lsfml-window-s -lsfml-system-s -IC:/Library/SFML-2.1/include
C:\DOCUME~1\Jairard\LOCALS~1\Temp\ccJDCYcN.o:main.cpp:(.text+0xd6): undefined reference to `_imp___ZN2sf6StringC1EPKcRKSt6locale'
C:\DOCUME~1\Jairard\LOCALS~1\Temp\ccJDCYcN.o:main.cpp:(.text+0xfc): undefined reference to `_imp___ZN2sf9VideoModeC1Ejjj'
C:\DOCUME~1\Jairard\LOCALS~1\Temp\ccJDCYcN.o:main.cpp:(.text+0x140): undefined reference to `_imp___ZN2sf12RenderWindowC1ENS_9VideoModeERKNS_6StringEjRKNS_15ContextSettingsE'
C:\DOCUME~1\Jairard\LOCALS~1\Temp\ccJDCYcN.o:main.cpp:(.text+0x176): undefined reference to `_imp___ZN2sf11CircleShapeC1Efj'
C:\DOCUME~1\Jairard\LOCALS~1\Temp\ccJDCYcN.o:main.cpp:(.text+0x187): undefined reference to `_imp___ZN2sf5Color5GreenE'
C:\DOCUME~1\Jairard\LOCALS~1\Temp\ccJDCYcN.o:main.cpp:(.text+0x191): undefined reference to `_imp___ZN2sf5Shape12setFillColorERKNS_5ColorE'
C:\DOCUME~1\Jairard\LOCALS~1\Temp\ccJDCYcN.o:main.cpp:(.text+0x1af): undefined reference to `_imp___ZN2sf6Window5closeEv'
C:\DOCUME~1\Jairard\LOCALS~1\Temp\ccJDCYcN.o:main.cpp:(.text+0x1c7): undefined reference to `_imp___ZN2sf6Window9pollEventERNS_5EventE'
C:\DOCUME~1\Jairard\LOCALS~1\Temp\ccJDCYcN.o:main.cpp:(.text+0x1f9): undefined reference to `_imp___ZN2sf5ColorC1Ehhhh'
C:\DOCUME~1\Jairard\LOCALS~1\Temp\ccJDCYcN.o:main.cpp:(.text+0x214): undefined reference to `_imp___ZN2sf12RenderTarget5clearERKNS_5ColorE'
C:\DOCUME~1\Jairard\LOCALS~1\Temp\ccJDCYcN.o:main.cpp:(.text+0x227): undefined reference to `_imp___ZN2sf12RenderStates7DefaultE'
C:\DOCUME~1\Jairard\LOCALS~1\Temp\ccJDCYcN.o:main.cpp:(.text+0x23b): undefined reference to `_imp___ZN2sf12RenderTarget4drawERKNS_8DrawableERKNS_12RenderStatesE'
C:\DOCUME~1\Jairard\LOCALS~1\Temp\ccJDCYcN.o:main.cpp:(.text+0x24d): undefined reference to `_imp___ZN2sf6Window7displayEv'
C:\DOCUME~1\Jairard\LOCALS~1\Temp\ccJDCYcN.o:main.cpp:(.text+0x25c): undefined reference to `_imp___ZNK2sf6Window6isOpenEv'
C:\DOCUME~1\Jairard\LOCALS~1\Temp\ccJDCYcN.o:main.cpp:(.text+0x285): undefined reference to `_imp___ZN2sf12RenderWindowD1Ev'
C:\DOCUME~1\Jairard\LOCALS~1\Temp\ccJDCYcN.o:main.cpp:(.text+0x2ac): undefined reference to `_imp___ZN2sf12RenderWindowD1Ev'
C:\DOCUME~1\Jairard\LOCALS~1\Temp\ccJDCYcN.o:main.cpp:(.text+0x2e6): undefined reference to `_imp___ZN2sf12RenderWindowD1Ev'
c:/mingw/bin/../lib/gcc/mingw32/4.7.2/../../../../mingw32/bin/ld.exe: C:\DOCUME~1\Jairard\LOCALS~1\Temp\ccJDCYcN.o: bad reloc address 0xf in section `.text$_ZN2sf6StringD1Ev[__ZN2sf6StringD1Ev]'
c:/mingw/bin/../lib/gcc/mingw32/4.7.2/../../../../mingw32/bin/ld.exe: final link failed: Invalid operation
collect2.exe: erreur: ld a retournÚ 1 code d'Útat d'exÚcution
makefile:32: recipe for target 'all' failed
mingw32-make: *** [all] Error 1

Est-ce un problème dans la façon de compiler ?

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : [windows] compilation en ligne de commande
« Réponse #16 le: Août 01, 2013, 08:54:59 pm »
C'est expliqué dans le tutoriel de démarrage. Il faut lier aux bibliothèques -s, et définir la macro SFML_STATIC.
Laurent Gomila - SFML developer

Jairard

  • Newbie
  • *
  • Messages: 23
    • Voir le profil
    • E-mail
Re : [windows] compilation en ligne de commande
« Réponse #17 le: Août 01, 2013, 10:15:23 pm »
Oups désolé, je ne pensais pas trouver ça dans les tuto  ::)
Donc maintenant ça compile en statique (j'ai vérifié que la taille de l'exécutable était plus grande), mais même problème à l'exécution :(

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : [windows] compilation en ligne de commande
« Réponse #18 le: Août 01, 2013, 10:29:03 pm »
Ah... Dommage.

Tu compiles toujours le petit code de ton premier post ?
Laurent Gomila - SFML developer

Jairard

  • Newbie
  • *
  • Messages: 23
    • Voir le profil
    • E-mail
Re : [windows] compilation en ligne de commande
« Réponse #19 le: Août 01, 2013, 10:44:46 pm »
J'étais parti sur un code un peu plus sympa à l'exécution :

#define SFML_STATIC
#include <SFML/Graphics.hpp>

int main()
{
    sf::RenderWindow window(sf::VideoMode(200, 200), "SFML works!");
    sf::CircleShape shape(100.f);
    shape.setFillColor(sf::Color::Green);

    while (window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
                window.close();
        }

        window.clear();
        window.draw(shape);
        window.display();
    }

    return 0;
}
 

mais en réessayant avec le code de départ j'ai toujours le même résultat

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : [windows] compilation en ligne de commande
« Réponse #20 le: Août 02, 2013, 07:45:08 am »
Est-ce que tu as plusieurs versions de SFML ou de MinGW installées ?
Laurent Gomila - SFML developer

Jairard

  • Newbie
  • *
  • Messages: 23
    • Voir le profil
    • E-mail
Re : [windows] compilation en ligne de commande
« Réponse #21 le: Août 02, 2013, 08:07:44 pm »
Pour la SFML, j'ai la version pré-compilée et la version que j'ai compilée.
Pour MinGW j'ai la version toute fraîche qui est utilisée pour compiler et une vieille version qui traîne dans un dossier de Qt.

Mais est-ce vraiment important vu que je link l'une ou l'autre des version de la SFML et que c'est bien la version la plus récente de MinGW qui est utilisée ?

Je commence à avoir l'impression que le problème ne vient pas de la SFML : j'ai testé avec une autre bibliothèque et j'ai eu le même résultat. J'ai donc essayé de compiler un "Hello world" :
#include <iostream>

int main()
{
    std::cout << "Hello world !" << std::endl;
    return 0;
}
 

A l'exécution le message s'affiche bien, mais le programme plante juste après ...
Je vais devenir fou  ???

Ce serait donc un problème directement lié à MinGW ?

Jairard

  • Newbie
  • *
  • Messages: 23
    • Voir le profil
    • E-mail
Re : [windows] compilation en ligne de commande
« Réponse #22 le: Août 04, 2013, 01:53:37 pm »
Un peu de nouveau : je me suis enfin décidé à utiliser gdb (je ne sais pas pourquoi je n'y ai pas pensé avant  :-[) sur le "Hello world !", et j'ai eu comme sortie :

(gdb) run
Starting program: C:\Documents and Settings\Jairard\Mes documents\Mes projets\test SFML\test.exe
[New Thread 3588.0xe10]

Program received signal SIGSEGV, Segmentation fault.
0x6fcad437 in libstdc++-6!_ZNSt6localeC2Ev ()
   from C:\WINDOWS\system32\libstdc++-6.dll
(gdb) bt
#0  0x6fcad437 in libstdc++-6!_ZNSt6localeC2Ev ()
   from C:\WINDOWS\system32\libstdc++-6.dll
#1  0x00401472 in main ()

Donc un problème avec listdc++-6.dll. C'est là que je me suis rappelé que, dans la folie de ma jeunesse, j'ai copié toutes les DLL du MinGW dans C:/WINDOWS/system32  ;D  Il a donc suffit que je les remplace par celles de me version actuelle pour que ça marche nickel. C'était donc bien un problème de multiples versions de MinGW.

Content de moi, j'essaie de compiler l'exemple utilisant la SFML. Comme avant, la compilation se passe sans soucis, mais j'ai encore un problème à l'exécution. Cette fois, le cadre de la fenêtre apparaît, avec le titre, mais l'intérieur reste transparent et le programme plante.
Voilà ce que gdb me dit :
(gdb) run
Starting program: C:\Documents and Settings\Jairard\Mes documents\Mes projets\test SFML\test.exe
[New Thread 3824.0xef4]
[New Thread 3824.0xef8]
[New Thread 3824.0xabc]
[New Thread 3824.0xb3c]
[New Thread 3824.0xe7c]
[New Thread 3824.0xba8]
[New Thread 3824.0xf04]

Program received signal SIGSEGV, Segmentation fault.
0x68ed2ce9 in sf::RenderTarget::clear (this=0x22fd30, color=...)
    at D:\developpement\sfml\sfml\src\SFML\Graphics\RenderTarget.cpp:58
58      D:\developpement\sfml\sfml\src\SFML\Graphics\RenderTarget.cpp: No such file or directory.
(gdb) bt
#0  0x68ed2ce9 in sf::RenderTarget::clear (this=0x22fd30, color=...)
    at D:\developpement\sfml\sfml\src\SFML\Graphics\RenderTarget.cpp:58
#1  0x004015ca in main () at main.cpp:30

Je trouve ça bizarre qu'il y ait un problème d'inclusion à partir d'un fichier de la SFML alors qu'elle est censée être déjà compilée ???
Cette fois ça ressemble plus à un problème lié à la SFML, donc je m'en remet à toi Laurent  :-*

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : [windows] compilation en ligne de commande
« Réponse #23 le: Août 04, 2013, 05:20:26 pm »
Ca ressemble encore à un mauvais match entre version de SFML et compilo :P
Laurent Gomila - SFML developer

Jairard

  • Newbie
  • *
  • Messages: 23
    • Voir le profil
    • E-mail
Re : [windows] compilation en ligne de commande
« Réponse #24 le: Août 04, 2013, 06:26:55 pm »
Etttt j'avais aussi copié les DLL de la SFML 2.0 dans C:/WINDOWS/system32.
Tout marche bien maintenant, de la compilation à l'exécution.
Désolé pour ce post qui, au final, n'a pas raison d'être  :-[

Juste une dernière question : quand je lance l'exécutable, il y a une console qui s'ouvre. Comment éviter ça ? est-ce qu'il y a une option à passer à la compilation ?

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : [windows] compilation en ligne de commande
« Réponse #25 le: Août 04, 2013, 07:14:21 pm »
Je te laisse voir par toi-même ("mingw no console" sur Google) :P
Laurent Gomila - SFML developer

Jairard

  • Newbie
  • *
  • Messages: 23
    • Voir le profil
    • E-mail
Re : [windows] compilation en ligne de commande
« Réponse #26 le: Août 05, 2013, 05:33:10 pm »
Je dois pouvoir faire ça ;D
Merci à toi et à Algue-Rythme pour votre aide !