Forum de la communauté SFML
Aide => Graphique => Discussion démarrée par: Spirou003 le Juillet 14, 2013, 05:28:42 pm
-
Bonjour,
Je me suis remis à programmer il y a deux semaines (maintenant que c'est les vacances ^^) et j'en suis arrivé au moment où je dois utiliser SFML. Donc voilà, je prépare tout ce qu'il me faut pour compiler le code minimal de SFML (celui donné dans l'accueil de la doc) et j'obtiens une erreur à l'édition des liens (une seule!):
undefined reference to `_imp___ZN2sf12RenderWindowC1ENS_9VideoModeERKSsjRKNS_15ContextSettingsE'
J'ai donc recompilé sfml par moi-même (001.png (http://d27.e-loader.net/7HRO5LJE1k.png), 002.png (http://d35.e-loader.net/6COGLX1Sj4.png), log.txt => fichier joint), tout semble s'être bien passé: les exemples compilent et s'exécutent comme il faut. Puis j'ai refait le projet Code::Blocks en suivant les instructions du tutoriel (pour le linker, dans l'ordre: audio - graphics - window - system), j'ai déclaré SFML_DYNAMIC, mais ça ne change rien. En mettant SFML_STATIC (c'est absurde, mais bon), j'ai un message un peu plus explicite:
undefined reference to `sf::RenderWindow::RenderWindow(sf::VideoMode, std::string const&, unsigned int, sf::ContextSettings const&)'
La seule chose qui me paraît possible est que je n'aie pas mis les bonnes options de compilation (003.png (http://d6.e-loader.net/xG1fOCAYp2.png)), mais je sèche un peu quant à savoir si c'est ça ou autre chose. Et puisqu'une fenêtre est indispensable pour faire un jeu, ça me laisse pas trop le choix que de régler le problème ^^'
Au passage, je me posais une question: à quoi sert libsmfl-main.a?
Merci d'avance!
-
Si tu mets la ou les dll de SFML dans le répertoire de ton programme, ça donne quoi ?
-
Ca ne change rien
-
Tu traînes de vieux en-têtes pré-SFML 2.0. Ce prototype de constructeur n'existe plus.
Si tu mets la ou les dll de SFML dans le répertoire de ton programme, ça donne quoi ?
Les erreur d'édition de liens n'ont absolument rien à voir avec les DLLs, ça se passe à un tout autre niveau (les DLLs ne sont requisent que pour éxecuter le programme). Un peu de lecture à ce sujet (les différentes étapes de construction d'un programme) ferait un peu de bien, c'est très important à comprendre ;)
-
Merci pour l'info, j'avoue avoir beaucoup de lacunes que l'université n'a rien fait pour combler :-[ Je vais voir ce que je peux trouver sur tout ça :)
-
Tu traînes de vieux en-têtes pré-SFML 2.0. Ce prototype de constructeur n'existe plus.
Ah ben oui, effectivement =X ça m'apprendra à faire mes mises à jour entièrement :-D (là j'me sens carrément nul ^^)
Merci beaucoup!
Sinon je me demandais, à quoi sert libsfml-main.a?
-
Sinon je me demandais, à quoi sert libsfml-main.a?
Si vous avez choisi de créer un projet "Windows application", alors le point d'entrée de votre code devrait être la fonction "WinMain" au lieu de "main". Etant donné que c'est spécifique à Windows, et que votre code ne compilerait donc pas sous Linux ou Mac OS X, SFML fournit un moyen de garder un point d'entrée "main" standard dans ce cas : liez votre projet au module sfml-main ("sfml-main-d.lib" en Debug, "sfml-main.lib" en Release), de la même manière que vous avez lié sfml-graphics, sfml-window et sfml-system.
-
Merci! :)