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

Auteur Sujet: Undefined reference avec la SFML 2  (Lu 2306 fois)

0 Membres et 1 Invité sur ce sujet

Sapin

  • Newbie
  • *
  • Messages: 10
    • Voir le profil
Undefined reference avec la SFML 2
« le: Mai 09, 2013, 02:37:48 pm »
Bonjour,

J'écris ce message car çà fait plusieurs jours que je me débats avec la compilation d'un projet avec la SFML 2. Mon but est de créer une librairie utilisant sfml-window comme back end. J'utilise GLEW, OpenGL 3.2 et PThread à côté mais j'ai déja réglé les problèmes de linkage avec ces 3 derniers. Je pense que le mieux pour vous décrire tous çà est mon script CMake :

#####################
# Define the project

cmake_minimum_required(VERSION 2.8)
project(Alt-Engine)

set(Alt-Engine_VERSION_MAJOR 0)
set(Alt-Engine_VERSION_MINOR 0)
set(Alt-Engine_VERSION_PATCH 0)

######################
# Include directories

include_directories("include" "extlibs/include")

if(WIN32)
    include_directories("extlibs/windows/include")
endif()

#####################
# External libraries

find_package(OpenGL REQUIRED)

set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "${PROJECT_SOURCE_DIR}/extlibs/mingw/lib/x86")

set(EXTRA_LIBS ${OPENGL_gl_LIBRARY})
set(EXTRA_LIBS ${EXTRA_LIBS} pthreadGC2)
set(EXTRA_LIBS ${EXTRA_LIBS} sfml-window sfml-system)

if(WIN32)
    if(COMPILER_GCC)
    endif()
endif()

#########
# Define

add_definitions(-DALT_DLL_EXPORTS -DGLEW_STATIC)

############
# Set files

file(GLOB_RECURSE ALT_SOURCE_FILES "src/*.cpp")
file(GLOB_RECURSE ALT_HEADER_FILES "include/*.hpp")
file(GLOB_RECURSE ALT_THIRD_C_SOURCE_FILES "extlibs/src/*.c")

####################
# Build the library

add_library(Alt-Engine SHARED ${ALT_SOURCE_FILES} ${ALT_HEADER_FILES} ${ALT_THIRD_C_SOURCE_FILES})
target_link_libraries(Alt-Engine ${EXTRA_LIBS})
 

Voici les erreurs que j'ai : (remarquez que j'ai des erreurs que avec sf::Window::setTitle et sf::Window::create alors que j'utilise d'autres méthodes de sf::Window)

14:01:54: Exécution des étapes pour le projet Alt-Engine...
14:01:54: Débute : "C:\MinGW\bin\mingw32-make.exe"
Linking CXX shared library libAlt-Engine.dll
CMakeFiles\Alt-Engine.dir/objects.a(SFMLVideoDevice.cpp.obj):SFMLVideoDevice.cpp:(.text+0x28e): undefined reference to `_imp___ZN2sf6Window8setTitleERKNS_6StringE'
Creating library file: libAlt-Engine.dll.a
CMakeFiles\Alt-Engine.dir/objects.a(SFMLVideoDevice.cpp.obj):SFMLVideoDevice.cpp:(.text+0x45a): undefined reference to `_imp___ZN2sf6Window6createENS_9VideoModeERKNS_6StringEjRKNS_15ContextSettingsE'
collect2: ld returned 1 exit status
mingw32-make[2]: *** [libAlt-Engine.dll] Error 1
mingw32-make[1]: *** [CMakeFiles/Alt-Engine.dir/all] Error 2
mingw32-make: *** [all] Error 2
14:01:55: Le processus "C:\MinGW\bin\mingw32-make.exe" s'est terminé avec le code 2.
Error while building/deploying project Alt-Engine (kit: Desktop Qt 5.0.1 MinGW 32bit)
Lors de l'exécution de l'étape "Make"
 

Pour résoudre les problèmes de compatibilité des compileurs, j'ai compilé la SFML avec le même que j'utilise pour ma lib. (il s'agit de MinGW 4.8 DW2; ne faites pas attention au "(kit: Desktop Qt 5.0.1 MinGW 32bit)" car ce n'est pas ce compilo qui est utilisé). Vous aurez peut-être remarqué que j'utilise QtCreator pour son intégration native de CMake en temps qu'IDE mais si j'utilise CMake en dehors de QtCreator et que je build avec Code::Blocks j'ai les mêmes erreurs...

Pour résumer je ne comprend rien à ce problème ... Merci d'avance


Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Undefined reference avec la SFML 2
« Réponse #1 le: Mai 09, 2013, 03:45:42 pm »
Tu utilises des en-têtes SFML à jour, mais des bibliothèques provenant d'une vieille révision. T'as tout mélangé, quoi ;)
Laurent Gomila - SFML developer

Sapin

  • Newbie
  • *
  • Messages: 10
    • Voir le profil
Re : Undefined reference avec la SFML 2
« Réponse #2 le: Mai 09, 2013, 03:53:21 pm »
Donc, je viens de compiler la SFML provenant de GitHub (date de ce matin) et j'ai intégré les libs à mon projet, j'ai aussi mis à jour (au cas où) les headers dans mon projet et j'ai toujours les mêmes erreurs ...

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Undefined reference avec la SFML 2
« Réponse #3 le: Mai 09, 2013, 03:58:39 pm »
Je ne peux rien te dire de plus, l'erreur est assez évidente : ces deux fonctions sont les dernières à avoir changé, le paramètre std::string a été remplacé par un sf::String. Là le diagnostic est sûr à 100% ;)

Donc vire tout ce qui concerne SFML, recommence, et essaye de bien garder cloisonnée ton installation de SFML (ne va pas copier partout les en-têtes et les bibliothèques, genre dans le répertoire du compilateur). Ce genre d'erreur (ya compris le "je suis certain d'avoir tout bien fait") arrive presque tous les jours :P
Laurent Gomila - SFML developer

Sapin

  • Newbie
  • *
  • Messages: 10
    • Voir le profil
Re : Undefined reference avec la SFML 2
« Réponse #4 le: Mai 09, 2013, 05:37:03 pm »
En effet, dans mon installation de MinGW 4.8 traînait une vielle installation de la SFML ... Un grand merci ! :)