Changement de compilateur, erreur étrange

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Salut !

Hier, j'ai décidé de faire le changement et de passer sous Windows 10, et en faisant un clean install, s'il vous plait. J'ai donc supprimé toute ma partition C, ce qui inclue Code::Block et les compilos que j'utilisais.

J'ai depuis réinstallé Code::Block (aucun soucis), puis TDM, en version 64bit, parce que j'ai envie de faire mes programmes en 64bit.

Cependant, le projet sur lequel je m’amuse en ce moment ne compile plus, alors qu'il me semble que j'utilisais bien ce même compilateur avant (et de toute façon, j'ai voulu re-build le prjet).

Voici les erreurs que j'obtient quand je compile (en image, c'est plus lisible): ici

Les erreurs pointent sur des appelles de fonctions (membre d'une classe) qui généralement accède à un fichier sur le disque dur. Par exemple, la première erreur est sur la ligne t1.loadFromFile("img/toolbox_o.png"); (où t1 est une sf::Texture).

Le projet utilise la SFML 2.2. Je compile en debug avec -O2, -std=c++14, -g… Je ne peux pas compiler avec les compilo de base livré avec C::B (TDM x86 je crois), parce qu'il ne reconnais pas -std=c++14 (et que j'en ai absolument besoin). J'ai donc essayé un autre compilateur : celui-ci (toujours basé sur GCC 5.1), mais j'ai encore plus d'erreur, toujours du même type : undefined reference to…

EDIT: Le compilo me balance l'erreur au momment du link, la compilation en elle-même marche… Je précise que j'ai bien ajouté les chemins des lib SFML et tout.

EDIT2: J'ai vérifier, et re-vérifier, je ne comprend pas d'où vient cette erreur de linkage, alors que j'ai bien préciser dans C::B toutes les libs à utiliser, et que je n'ai pas activé le linkage static…

EDIT3: Toujours aucun succès en précisant

-L D:\Bibliotheques\SFML-2.2\lib -lsfml-window -lsfml-graphics -lsfml-system -lsfml-main

au compilo…

Quelqu'un saurait-il d'où vient cette erreur ?

Merci d'avance

Édité par Tycoon

+0 -0

Cette réponse a aidé l'auteur du sujet

J'imagine que tu utilises une version de SFML précompilé pour Windows qu'on trouve sur la page de téléchargement. Les paquets officiels ne sont pas compatible avec GCC 5.1. Il me semble que les libs c++ doivent être compilées avec le même compilo que celui de l'application qui les utilisent. Je te propose de compiler SFML toi-même avec GCC 5.1.

http://www.sfml-dev.org/tutorials/2.2/compile-with-cmake-fr.php

http://www.sfml-dev.org/tutorials/2.3/start-cb-fr.php

http://en.sfml-dev.org/forums/index.php?topic=13623.0

eXpl0it3r

C++ libraries need to be compiled with the same compiler as you want to build your application with, therefore if you use C::B default compiler you'll need libs that where compiled with TDM as well. All the offical per-compiled libraries can be found on the download page and sincd there's no download for cygwin, there are no pre-compiled binaries. You can however easily build SFML on your own.

http://stackoverflow.com/questions/23895081/can-you-mix-c-compiled-with-different-versions-of-the-same-compiler

Édité par RedFruit

+1 -0
Auteur du sujet

Merci ! En effet, le problème venait de là ! J'ai compilé SFML 2.3.1 (l'occasion de passer à la version la plus récente en plus) en suivant les instructions de tes liens, et maintenant ça marche bien !

Merci beaucoup !

Édité par Tycoon

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte