SFML community forums

Help => General => Topic started by: DyFxvt on August 15, 2020, 04:41:53 pm

Title: Code::Blocks cannot find sfml-graphics-d, sfml-audio-d, etc.
Post by: DyFxvt on August 15, 2020, 04:41:53 pm
You've probably heard this one a million times, but in the IDE I'm using (Code::Blocks), it cannot find
the files I'm trying to link, like sfml-graphics-d, sfml-audio-d, etc.

I followed a tutorial, but when it didn't work I tried compiling the source like the video said,
but of course with my luck CMake couldn't find the files I was trying to use and gave an error.
(It's always the compilers that get me, I'm surprised I was even able to build a Hello World program :( )

I have tried this with both the "GCC 5.1.0 TDM (SJLJ)" and "GCC 7.3.0 MinGW (DW2)" versions,
and tried the ladder with both the 64 and 32bit versions of Code::Blocks.

The build log confuses me even more...
C:/Program Files (x86)/CodeBlocks/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:\Program Files (x86)\CodeBlocks\MinGW\_Libraries\SFML-2.5.1\lib/libsfml-graphics-d.a when searching for -lsfml-graphics-d
C:/Program Files (x86)/CodeBlocks/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:\Program Files (x86)\CodeBlocks\MinGW\_Libraries\SFML-2.5.1\lib\libsfml-graphics-d.a when searching for -lsfml-graphics-d
C:/Program Files (x86)/CodeBlocks/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:\Program Files (x86)\CodeBlocks\MinGW\_Libraries\SFML-2.5.1\lib/libsfml-graphics-d.a when searching for -lsfml-graphics-d
C:/Program Files (x86)/CodeBlocks/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lsfml-graphics-d
(I get these same 4 lines for the rest of the things I tried to link)

I have double, tripple, quadruple checked to make sure I got the linker settings right.
I also tried to set my project's build target to "release", but I get the same errors (minus the "-d" at the end of the file names)
Title: Re: Code::Blocks cannot find sfml-graphics-d, sfml-audio-d, etc.
Post by: Laurent on August 15, 2020, 09:42:11 pm
"Incompatible" probably means not the right architecture (32/64 bits).
Title: Re: Code::Blocks cannot find sfml-graphics-d, sfml-audio-d, etc.
Post by: DyFxvt on August 15, 2020, 10:16:04 pm
When I got this error message I believe I was using Code::Blocks 32bit with GCC 7.3.0 MinGW (DW2) 32bit.
I also got the same exact build log messages when I used GCC 5.1.0 TDM (SJLJ) 32bit.
Weird how this could have happened; or is there something else that's completely going over my head?
Title: Re: Code::Blocks cannot find sfml-graphics-d, sfml-audio-d, etc.
Post by: Laurent on August 16, 2020, 09:49:30 am
Ok, so your compiler was a 32-bit one, what about your SFML libraries?
Title: Re: Code::Blocks cannot find sfml-graphics-d, sfml-audio-d, etc.
Post by: DyFxvt on August 16, 2020, 04:20:25 pm
32bit. I believe that's what I meant when I said I tried GCC 7.3.0 MinGW (DW2) 32bit and GCC 5.1.0 TDM (SJLJ) 32bit.
Title: Re: Code::Blocks cannot find sfml-graphics-d, sfml-audio-d, etc.
Post by: AngusGillott on January 03, 2022, 11:25:57 am
Hey Laurent,

I've come to this thread because it is what comes up if you Google 'code blocks sfml cannot find lib'.

Please update the CodeBlocks tutorial, it has a very misleading tooltip: https://www.sfml-dev.org/download/sfml/2.5.1/

"There are multiple variants of GCC for Windows ... select the package which corresponds to the version that you use. If you are unsure, check which of the libgcc_s_sjlj-1.dll or libgcc_s_dw2-1.dll files is present in your MinGW/bin folder. If MinGW was installed along with Code::Blocks, you probably have an SJLJ version."

This is misleading, because the default compiler that comes with the default (64-bit) version of CodeBlocks is the "SEH" version. If an attentive beginner reader is following your tutorial, they won't be able to find "libgcc_s_sjlj-1.dll" or "libgcc_s_dw2-1.dll" in the MinGW folder (only "libgcc_s_seh-1.dll"). At this point they'll probably just cross their fingers and hope that they have the SJLJ version, because that's what you suggest.

The tutorial should mention that they might find the libgcc_s_seh-1.dll as one of three possible options.