SFML community forums
Help => General => Topic started by: sglorz on April 02, 2011, 11:40:55 pm
-
I have these undefined references when I compile my project on Code::Blocks (MingW):
..\libext\SFML\lib\libsfml-graphics-s.a(RenderWindow.cpp.obj):RenderWindow.cpp|| undefined reference to `sf::Window::~Window()'|
..\libext\SFML\lib\libsfml-graphics-s.a(RenderWindow.cpp.obj):RenderWindow.cpp|| undefined reference to `sf::Window::~Window()'|
..\libext\SFML\lib\libsfml-graphics-s.a(RenderWindow.cpp.obj):RenderWindow.cpp|| undefined reference to `sf::Window::~Window()'|
..\libext\SFML\lib\libsfml-graphics-s.a(RenderWindow.cpp.obj):RenderWindow.cpp|| undefined reference to `sf::Window::~Window()'|
..\libext\SFML\lib\libsfml-graphics-s.a(RenderWindow.cpp.obj):RenderWindow.cpp|| undefined reference to `sf::Window::~Window()'|
..\libext\SFML\lib\libsfml-graphics-s.a(RenderWindow.cpp.obj):RenderWindow.cpp|| more undefined references to `sf::Window::~Window()' follow|
..\libext\SFML\lib\libsfml-graphics-s.a(RenderWindow.cpp.obj):RenderWindow.cpp|| undefined reference to `sf::Window::Window()'|
..\libext\SFML\lib\libsfml-graphics-s.a(RenderWindow.cpp.obj):RenderWindow.cpp|| undefined reference to `sf::Window::~Window()'|
..\libext\SFML\lib\libsfml-graphics-s.a(RenderWindow.cpp.obj):RenderWindow.cpp|| undefined reference to `sf::Window::Window()'|
..\libext\SFML\lib\libsfml-graphics-s.a(RenderWindow.cpp.obj):RenderWindow.cpp|| undefined reference to `sf::Window::~Window()'|
..\libext\SFML\lib\libsfml-graphics-s.a(RenderWindow.cpp.obj):RenderWindow.cpp|| undefined reference to `sf::Window::Window()'|
..\libext\SFML\lib\libsfml-graphics-s.a(RenderWindow.cpp.obj):RenderWindow.cpp|| undefined reference to `sf::Window::Create(HWND__*, sf::ContextSettings const&)'|
..\libext\SFML\lib\libsfml-graphics-s.a(RenderWindow.cpp.obj):RenderWindow.cpp|| undefined reference to `sf::Window::~Window()'|
..\libext\SFML\lib\libsfml-graphics-s.a(RenderWindow.cpp.obj):RenderWindow.cpp|| undefined reference to `sf::Window::Window()'|
..\libext\SFML\lib\libsfml-graphics-s.a(RenderWindow.cpp.obj):RenderWindow.cpp|| undefined reference to `sf::Window::Create(HWND__*, sf::ContextSettings const&)'|
..\libext\SFML\lib\libsfml-graphics-s.a(RenderWindow.cpp.obj):RenderWindow.cpp|| undefined reference to `sf::Window::~Window()'|
..\libext\SFML\lib\libsfml-graphics-s.a(RenderWindow.cpp.obj):RenderWindow.cpp|| undefined reference to `sf::Window::Window()'|
..\libext\SFML\lib\libsfml-graphics-s.a(RenderWindow.cpp.obj):RenderWindow.cpp|| undefined reference to `sf::Window::Create(sf::VideoMode, std::string const&, unsigned long, sf::ContextSettings const&)'|
..\libext\SFML\lib\libsfml-graphics-s.a(RenderWindow.cpp.obj):RenderWindow.cpp|| undefined reference to `sf::Window::~Window()'|
..\libext\SFML\lib\libsfml-graphics-s.a(RenderWindow.cpp.obj):RenderWindow.cpp|| undefined reference to `sf::Window::Window()'|
..\libext\SFML\lib\libsfml-graphics-s.a(RenderWindow.cpp.obj):RenderWindow.cpp|| undefined reference to `sf::Window::Create(sf::VideoMode, std::string const&, unsigned long, sf::ContextSettings const&)'|
..\libext\SFML\lib\libsfml-graphics-s.a(RenderWindow.cpp.obj):RenderWindow.cpp|| undefined reference to `sf::Window::~Window()'|
..\libext\SFML\lib\libsfml-graphics-s.a(RenderWindow.cpp.obj):RenderWindow.cpp|| undefined reference to `sf::Window::GetHeight() const'|
..\libext\SFML\lib\libsfml-graphics-s.a(RenderWindow.cpp.obj):RenderWindow.cpp|| undefined reference to `sf::Window::GetWidth() const'|
..\libext\SFML\lib\libsfml-graphics-s.a(RenderWindow.cpp.obj):RenderWindow.cpp|| undefined reference to `sf::Window::SetActive(bool) const'|
..\libext\SFML\lib\libsfml-graphics-s.a(RenderTarget.cpp.obj):RenderTarget.cpp|| undefined reference to `sf::GlResource::~GlResource()'|
..\libext\SFML\lib\libsfml-graphics-s.a(RenderTarget.cpp.obj):RenderTarget.cpp|| undefined reference to `sf::GlResource::~GlResource()'|
..\libext\SFML\lib\libsfml-graphics-s.a(RenderTarget.cpp.obj):RenderTarget.cpp|| undefined reference to `sf::GlResource::~GlResource()'|
..\libext\SFML\lib\libsfml-graphics-s.a(RenderTarget.cpp.obj):RenderTarget.cpp|| undefined reference to `sf::GlResource::~GlResource()'|
..\libext\SFML\lib\libsfml-graphics-s.a(RenderTarget.cpp.obj):RenderTarget.cpp|| undefined reference to `sf::GlResource::~GlResource()'|
..\libext\SFML\lib\libsfml-graphics-s.a(Renderer.cpp.obj):Renderer.cpp|| undefined reference to `sf::GlResource::GlResource()'|
..\libext\SFML\lib\libsfml-graphics-s.a(Renderer.cpp.obj):Renderer.cpp|| undefined reference to `sf::GlResource::GlResource()'|
..\libext\SFML\lib\libsfml-graphics-s.a(Shader.cpp.obj):Shader.cpp|| undefined reference to `sf::GlResource::EnsureGlContext()'|
||More errors follow but not being shown.|
||Edit the max errors limit in compiler options...|
||=== Build finished: 50 errors, 0 warnings ===|
I've rebuild the master SFML on GIT with CMake without any error (very clean build system by the way :wink:).
I link with these:
-mthreads
-lsfml-system-s
-lsfml-window-s
-lsfml-graphics-s
-lopengl32
-lglu32
So, what did I miss?
-
You missed this:
When linking to multiple SFML libraries, make sure you link them in the right order, as it's important for MinGW. The rule is the following : if library XXX depends on (uses) library YYY, put XXX first and then YYY. An exemple with SFML : sfml-graphics depends on sfml-window, and sfml-window depends an sfml-system. The link options would be as follows :
-lsfml-graphics
-lsfml-window
-lsfml-system
-
:oops:
Of course!
Quel idiot !
Merci !
-
I still have linking problems:
obj\Debug\src\lfsfmlcanvas.o||In function `lfSFMLCanvas':|
D:\data\Projects\LaFabrique\GUI\src\lfsfmlcanvas.cpp|23|undefined reference to `_imp___ZN2sf12RenderWindowC2Ev'|
D:\data\Projects\LaFabrique\GUI\src\lfsfmlcanvas.cpp|37|undefined reference to `_imp___ZN2sf6Window6CreateEP6HWND__RKNS_15ContextSettingsE'|
D:\data\Projects\LaFabrique\GUI\src\lfsfmlcanvas.cpp|40|undefined reference to `_imp___ZN2sf12RenderWindowD2Ev'|
D:\data\Projects\LaFabrique\GUI\src\lfsfmlcanvas.cpp|23|undefined reference to `_imp___ZN2sf12RenderWindowC2Ev'|
D:\data\Projects\LaFabrique\GUI\src\lfsfmlcanvas.cpp|37|undefined reference to `_imp___ZN2sf6Window6CreateEP6HWND__RKNS_15ContextSettingsE'|
D:\data\Projects\LaFabrique\GUI\src\lfsfmlcanvas.cpp|40|undefined reference to `_imp___ZN2sf12RenderWindowD2Ev'|
obj\Debug\src\lfsfmlcanvas.o||In function `~lfSFMLCanvas':|
D:\data\Projects\LaFabrique\GUI\src\lfsfmlcanvas.cpp|45|undefined reference to `_imp___ZN2sf12RenderWindowD2Ev'|
D:\data\Projects\LaFabrique\GUI\src\lfsfmlcanvas.cpp|45|undefined reference to `_imp___ZN2sf12RenderWindowD2Ev'|
D:\data\Projects\LaFabrique\GUI\src\lfsfmlcanvas.cpp|45|undefined reference to `_imp___ZN2sf12RenderWindowD2Ev'|
obj\Debug\src\lfsfmlcanvas.o:D:\data\Projects\LaFabrique\GUI\src\lfsfmlcanvas.cpp|79|undefined reference to `_imp___ZN2sf6Window7DisplayEv'|
||=== Build finished: 10 errors, 0 warnings ===|
What is the problem here? It looks like there is a wrong compilation option...
-
You must define SFML_STATIC when you use static libraries.
-
Ok, I thought there was only a define for dynamic libs.
Thanks again Laurent, your support confirm my choice for SFML.
-
Ok, I thought there was only a define for dynamic libs.
That was true for SFML 1.6, but it has changed in SFML 2 (and it's not documented yet).