[dev c++ / SFML] compilation OK mais exécutables muets o_O

dubstructor Messages postés 15 Date d'inscription vendredi 24 juillet 2009 Statut Membre Dernière intervention 24 février 2010 - 13 févr. 2010 à 22:40
dubstructor Messages postés 15 Date d'inscription vendredi 24 juillet 2009 Statut Membre Dernière intervention 24 février 2010 - 24 févr. 2010 à 13:41
Bonsoir à tous,

ce post s'adresse à ceux qui sont familiers avec SFML.

voilà après m'être bataillé un après midi, j'ai enfin réussi à compiler une petite appli SFML sous dev c++ . Seulement voilà, à l'exécution il ne se passe rien d'autre que le "system("PAUSE") ;" de la fin qui nous invite gentiment à taper sur le clavier et rentrez chez vous y'a plus rien à voir.

Alors comme je l'ai dit je suis sous dev c++, et plus généralement sous win XP (j'ai aussi codeblocks pour des applis sur microcontrolleurs, et comme le tuto SFML est fait pour codeblocks j'ai essayé cette voie là, j'ai rien réussi à en tirer.)
Donc voilà, j'ai bien mis tous les includes dans le bon dossier, les libs aussi, je me suis arraché les cheveux un bon moment avant de comprendre que quand dev c++ voyait "\lib" dans ses chemins d'accès, il n'allait pas chercher "\lib\mingw" tout seul comme un grand. J'ai commencé par les versions dynamiques des librairies, en mettant bien les dll dans mon répertoire projet et avec la #define SFML_DYNAMIC. Rien (enfin compilation OK mais c'est tout).
Du coup je suis passé aux versions statiques, et là il s'est enfin passé quelque chose : la compilation s'est bien passée, mais à l'exécution il manquait openAl32.dll . L'erreur corrigée, même chose : un exécutable muet.

Concrètement, c'est juste pour une appli audio, donc :
-lsfml-audio-s
-lsfml-system-s
sont linkés (enfin pour les versions statiques), dans cet ordre ;
openAl32.dll figure évidemment en bonne place dans le dossier projet ;
du coup on n'a plus besoin des autres dll mais je les ai quand même mises histoire d'être sûr (lbsndfile-1.dll,sfml-audio.dll,sfml-system.dll).

Le code test est :


////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
#include <SFML/Audio.hpp>
#include 
#include 


////////////////////////////////////////////////////////////
/// Entry point of application
///
/// \return Application exit code
///
////////////////////////////////////////////////////////////
int main()
{
    // Load a sound buffer from a wav file
    sf::SoundBuffer Buffer;
    if (!Buffer.LoadFromFile("sound.wav"))
        return EXIT_FAILURE;

    // Display sound informations
    std::cout << "sound.wav :" << std::endl;
    std::cout << " " << Buffer.GetDuration()      << " sec"           << std::endl;
    std::cout << " " << Buffer.GetSampleRate()    << " samples / sec" << std::endl;
    std::cout << " " << Buffer.GetChannelsCount() << " channels"      << std::endl;

    // Create a sound instance and play it
    sf::Sound Sound(Buffer);
    Sound.Play();

    // Loop while the sound is playing
    while (Sound.GetStatus() == sf::Sound::Playing)
    {
        // Display the playing position
        std::cout << "\rPlaying... " << std::fixed << std::setprecision(2) << Sound.GetPlayingOffset() << " sec";

        // Leave some CPU time for other threads
        sf::Sleep(0.1f);
    }
    std::cout << std::endl;

    // Wait until the user presses 'enter' key
    std::cout << "Press enter to exit..." << std::endl;
    std::cin.ignore(10000, '\n');

    return EXIT_SUCCESS;
}


Et voilà au final aucun problème de compil, les headers sont détectés, les librairies aussi, et mon exé est muet. Même en ligne de commande.
(Note : un fichier "sound.wav" bidon est présent, et même si je supprime tout le code concernant les objets sf, et que je mets un cout, rien ne s'affiche .)
En fait après divers tests, je me suis rendu compte que le simple fait de lier ces librairies me sort des exécutables muets. Du genre je fais un "hello world" (même avec un #include d'un header SFML), nickel, mais quand je linke ces librairies, ça compile mais ... rien.

So WTF ?????????

5 réponses

dubstructor Messages postés 15 Date d'inscription vendredi 24 juillet 2009 Statut Membre Dernière intervention 24 février 2010
14 févr. 2010 à 13:17
Nan ? Personne ?
0
dubstructor Messages postés 15 Date d'inscription vendredi 24 juillet 2009 Statut Membre Dernière intervention 24 février 2010
14 févr. 2010 à 13:24
Ouah c dingue j'ai fait une énième recherche désespérée et google me trouve ce topic en premier
0
dubstructor Messages postés 15 Date d'inscription vendredi 24 juillet 2009 Statut Membre Dernière intervention 24 février 2010
14 févr. 2010 à 13:27
Tiens au passage j'ai trouvé ça :
why you shouldn't use dev c++
0
mogwai93 Messages postés 361 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 19 mars 2015
15 févr. 2010 à 11:45
Je repondrais pour le dernier lien (je ne connais pas SFML) :
- il ne faut pas confondre EDI et compilateur
- un logiciel mis à jour n'est pas forcément meilleur qu'un logiciel concurrent non mis à jour (et inversement)
- codeblock n'a pas été mis à jour pendant plus de 2ans, pourtant il était toujours utilisé...
- ....

- que l'on perde des évolutions ou des options : là ok, mais pour le reste, ca dépend de trop de paramètres : ce revient à comparer 2 choses totalement différents qui ont vocation à obtenir le meme résultat
bref ca pourrait faire l'objet d'un débat



dans ton cas, c'est peut-être plus un pb avec gcc qu'avec devcpp (ou un pb de code)
regarde la version de gcc que tu utilises et si elle est sensée fonctionner correctement avec SFML ou si dans certains cas, ca ne fonctionne pas correctement
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dubstructor Messages postés 15 Date d'inscription vendredi 24 juillet 2009 Statut Membre Dernière intervention 24 février 2010
24 févr. 2010 à 13:41
Salut. De retour après une bonne semaine de vacances ^^

Bon OK c'est vrai que mon sens critique aurait dû me hurler que dans ce lien l'amalgame est joyeusement fait entre EDI et compilo... Donc on va gentiment oublier cet épisode surtout que ça fait pas avancer le schmilblick.

Donc un pb de code, j'utilise le code donné en exemple sur le site de SFML, et de ce que j'ai compris du premier tuto il ne me semble pas contenir d'erreurs...

Par contre, pour avoir essayé aussi avec codeBlocks sur gcc, je soupçonne plus une erreur du compilo, comme tu suggères. Seulement ma version de minGW est plus récente que SFML. Donc là je suis paumé ...
0