It assumes some prior knowledge and leaves some things entirely unexplained, such as where to find / how to link to opengl32, winmm and gdi32, and where to put those files in relation to the sfml libraries.
Those files are Windows system files and as such are stored in \Windows\System32
However, note that these must not be moved and do not need to be copied.
I don't know Code::Blocks but it looks like you should add those libraries to the list in "Linker Settings" (along with sfml-graphics, sfml-windows and sfml-system, for example)
Don't forget to add SFML_STATIC to the "#defines"!
All of that is only if you are linking statically. Dynamically, the common problem is missing DLLs - they need to be next to the built executable.
Wow. With regards to dynamic linking, that did it for me! Thanks! You may want to add that to the tutorial ;)
The only mention of the dll files in the entire tutorial is here in passing: "The settings shown here will result in your application being linked to the dynamic version of SFML, the one that needs the DLL files."
I still get errors when attempting static linking however:
||=== Build: Debug in SfmlTest (compiler: GNU GCC Compiler) ===|
C:\SFML-2.4.1\lib\libsfml-graphics-s-d.a(RenderTarget.cpp.obj)||In function `ZN2sf12RenderTarget5clearERKNS_5ColorE':|
D:\sfml-release\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|106|undefined reference to `glClearColor@16'|
D:\sfml-release\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|107|undefined reference to `glClear@4'|
C:\SFML-2.4.1\lib\libsfml-graphics-s-d.a(RenderTarget.cpp.obj)||In function `ZN2sf12RenderTarget4drawEPKNS_6VertexEjNS_13PrimitiveTypeERKNS_12RenderStatesE':|
D:\sfml-release\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|276|undefined reference to `glVertexPointer@16'|
D:\sfml-release\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|277|undefined reference to `glColorPointer@16'|
D:\sfml-release\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|278|undefined reference to `glTexCoordPointer@16'|
D:\sfml-release\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|287|undefined reference to `glDrawArrays@12'|
C:\SFML-2.4.1\lib\libsfml-graphics-s-d.a(RenderTarget.cpp.obj)||In function `ZN2sf12RenderTarget12pushGLStatesEv':|
D:\sfml-release\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|311|undefined reference to `glGetError@0'|
D:\sfml-release\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|321|undefined reference to `glPushClientAttrib@4'|
D:\sfml-release\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|322|undefined reference to `glPushAttrib@4'|
D:\sfml-release\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|324|undefined reference to `glMatrixMode@4'|
D:\sfml-release\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|325|undefined reference to `glPushMatrix@0'|
D:\sfml-release\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|326|undefined reference to `glMatrixMode@4'|
D:\sfml-release\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|327|undefined reference to `glPushMatrix@0'|
D:\sfml-release\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|328|undefined reference to `glMatrixMode@4'|
D:\sfml-release\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|329|undefined reference to `glPushMatrix@0'|
C:\SFML-2.4.1\lib\libsfml-graphics-s-d.a(RenderTarget.cpp.obj)||In function `ZN2sf12RenderTarget11popGLStatesEv':|
D:\sfml-release\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|341|undefined reference to `glMatrixMode@4'|
D:\sfml-release\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|342|undefined reference to `glPopMatrix@0'|
D:\sfml-release\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|343|undefined reference to `glMatrixMode@4'|
D:\sfml-release\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|344|undefined reference to `glPopMatrix@0'|
D:\sfml-release\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|345|undefined reference to `glMatrixMode@4'|
D:\sfml-release\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|346|undefined reference to `glPopMatrix@0'|
D:\sfml-release\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|348|undefined reference to `glPopClientAttrib@0'|
D:\sfml-release\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|349|undefined reference to `glPopAttrib@0'|
C:\SFML-2.4.1\lib\libsfml-graphics-s-d.a(RenderTarget.cpp.obj)||In function `ZN2sf12RenderTarget13resetGLStatesEv':|
D:\sfml-release\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|374|undefined reference to `glDisable@4'|
D:\sfml-release\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|375|undefined reference to `glDisable@4'|
D:\sfml-release\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|376|undefined reference to `glDisable@4'|
D:\sfml-release\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|377|undefined reference to `glDisable@4'|
D:\sfml-release\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|378|undefined reference to `glEnable@4'|
D:\sfml-release\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|379|undefined reference to `glEnable@4'|
D:\sfml-release\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|380|undefined reference to `glMatrixMode@4'|
D:\sfml-release\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|381|undefined reference to `glEnableClientState@4'|
D:\sfml-release\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|382|undefined reference to `glEnableClientState@4'|
D:\sfml-release\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|383|undefined reference to `glEnableClientState@4'|
C:\SFML-2.4.1\lib\libsfml-graphics-s-d.a(RenderTarget.cpp.obj)||In function `ZN2sf12RenderTarget16applyCurrentViewEv':|
D:\sfml-release\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|419|undefined reference to `glViewport@16'|
D:\sfml-release\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|422|undefined reference to `glMatrixMode@4'|
D:\sfml-release\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|423|undefined reference to `glLoadMatrixf@4'|
D:\sfml-release\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|426|undefined reference to `glMatrixMode@4'|
C:\SFML-2.4.1\lib\libsfml-graphics-s-d.a(RenderTarget.cpp.obj)||In function `ZN2sf12RenderTarget14applyBlendModeERKNS_9BlendModeE':|
D:\sfml-release\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|444|undefined reference to `glBlendFunc@8'|
C:\SFML-2.4.1\lib\libsfml-graphics-s-d.a(RenderTarget.cpp.obj)||In function `ZN2sf12RenderTarget14applyTransformERKNS_9TransformE':|
D:\sfml-release\_Sources\SFML\src\SFML\Graphics\RenderTarget.cpp|485|undefined reference to `glLoadMatrixf@4'|
C:\SFML-2.4.1\lib\libsfml-graphics-s-d.a(Texture.cpp.obj)||In function `ZN2sf7TextureD2Ev':|
D:\sfml-release\_Sources\SFML\src\SFML\Graphics\Texture.cpp|104|undefined reference to `glDeleteTextures@8'|
C:\SFML-2.4.1\lib\libsfml-graphics-s-d.a(Texture.cpp.obj)||In function `ZN2sf7Texture6createEjj':|
D:\sfml-release\_Sources\SFML\src\SFML\Graphics\Texture.cpp|146|undefined reference to `glGenTextures@8'|
D:\sfml-release\_Sources\SFML\src\SFML\Graphics\Texture.cpp|194|undefined reference to `glBindTexture@8'|
D:\sfml-release\_Sources\SFML\src\SFML\Graphics\Texture.cpp|195|undefined reference to `glTexImage2D@36'|
D:\sfml-release\_Sources\SFML\src\SFML\Graphics\Texture.cpp|196|undefined reference to `glTexParameteri@12'|
D:\sfml-release\_Sources\SFML\src\SFML\Graphics\Texture.cpp|197|undefined reference to `glTexParameteri@12'|
D:\sfml-release\_Sources\SFML\src\SFML\Graphics\Texture.cpp|198|undefined reference to `glTexParameteri@12'|
D:\sfml-release\_Sources\SFML\src\SFML\Graphics\Texture.cpp|199|undefined reference to `glTexParameteri@12'|
C:\SFML-2.4.1\lib\libsfml-graphics-s-d.a(Texture.cpp.obj)||In function `ZN2sf7Texture13loadFromImageERKNS_5ImageERKNS_4RectIiEE':|
D:\sfml-release\_Sources\SFML\src\SFML\Graphics\Texture.cpp|276|undefined reference to `glBindTexture@8'|
D:\sfml-release\_Sources\SFML\src\SFML\Graphics\Texture.cpp|279|undefined reference to `glTexSubImage2D@36'|
D:\sfml-release\_Sources\SFML\src\SFML\Graphics\Texture.cpp|283|undefined reference to `glTexParameteri@12'|
||More errors follow but not being shown.|
||Edit the max errors limit in compiler options...|
||=== Build failed: 50 error(s), 0 warning(s) (0 minute(s), 1 second(s)) ===|
I did all of the things you mentioned in regards to static linking, including setting the flag.
Edit: Hapax may have actually given me the very answer I was looking for. In regards to dynamic linking, if I want to setup another project outside of codeblocks, do I *only* need the dlls in the folder with my exe? Do I need any make files? I don't have to mess with linking settings or search directories or anything else? If that is the case, I don't understand the nature of the include statement in the example:
#include <SFML/Graphics.hpp>