G++ не видит файлы для привязки SFML библеотеки

Рейтинг: 0Ответов: 1Опубликовано: 08.04.2023

При попытке скомпилировать c++ код с использованием библиотеки SFML (2.5.1) с помощью g++ (7.3.0 mingw x64), выдаёт ошибку:

C:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/7.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -llibsfml-graphics-s
C:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/7.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -llibsfml-window-s
C:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/7.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -llibsfml-system-s
collect2.exe: error: ld returned 1 exit status
make: *** [Makefile:3: all] Error 1

Makefile:

all:
    g++ -c main.cpp -I src/include -DSFML_STATIC
    g++ -o main main.o -L src/lib -l libsfml-graphics-s -l libsfml-window-s -l libsfml-system-s -l opengl32 -l winmm -l gdi32

Как я понял -L задаёт путь для файлов привязки с припиской -l, но в моем случае это не работает почему-то. Использовал решение, но оно тоже не помогло. И я не понимаю в чем существенная разница моего makefile и этого (разница в синтаксисе, тут SDL2, рабочий код):

all:
    g++ -I src/include -L src/lib -o main main.cpp -lmingw32 -lSDL2main -lSDL2

Ведь синтаксис почти один и тот же, Во многих решениях вижу -lsfml-window-s, но у меня такого файла нет (Видимо из-за разных версий SFML)

dir-выход папки src/lib:

 Содержимое папки C:\cpp_projects\SFMLProject\src\lib

07.04.2023  23:40    <DIR>          .
07.04.2023  23:40    <DIR>          ..
07.04.2023  23:40    <DIR>          cmake
08.05.2018  23:40           610 690 libFLAC.a
08.05.2018  23:40           826 844 libfreetype.a
08.05.2018  23:40            52 362 libogg.a
08.05.2018  23:40           121 766 libopenal32.a
16.10.2018  00:41           140 560 libsfml-audio-d.a
16.10.2018  00:43         2 384 466 libsfml-audio-s-d.a
16.10.2018  00:43           197 722 libsfml-audio-s.a
16.10.2018  00:42           140 168 libsfml-audio.a
16.10.2018  00:42           374 952 libsfml-graphics-d.a
16.10.2018  00:43         4 106 580 libsfml-graphics-s-d.a
16.10.2018  00:43           543 112 libsfml-graphics-s.a
16.10.2018  00:42           373 946 libsfml-graphics.a
16.10.2018  00:42            22 896 libsfml-main-d.a
16.10.2018  00:43             1 044 libsfml-main.a
16.10.2018  00:41           140 256 libsfml-network-d.a
16.10.2018  00:42         1 572 046 libsfml-network-s-d.a
16.10.2018  00:43           184 224 libsfml-network-s.a
16.10.2018  00:42           139 868 libsfml-network.a
16.10.2018  00:41            99 238 libsfml-system-d.a
16.10.2018  00:42           871 904 libsfml-system-s-d.a
16.10.2018  00:43            73 292 libsfml-system-s.a
16.10.2018  00:42            98 946 libsfml-system.a
16.10.2018  00:41            77 978 libsfml-window-d.a
16.10.2018  00:43         2 665 250 libsfml-window-s-d.a
16.10.2018  00:43           225 752 libsfml-window-s.a
16.10.2018  00:42            77 756 libsfml-window.a
08.05.2018  23:40           202 044 libvorbis.a
08.05.2018  23:40           687 658 libvorbisenc.a
08.05.2018  23:40            37 612 libvorbisfile.a

.Компилирую на Windows 10, использую VS Code

Ответы

▲ 0Принят

Переустановить mingw под версию sfml 1 в 1 и убирать префикс lib:

g++ -o main main.o -L src/lib -l sfml-graphics-s -l sfml-window-s -l sfml-system-s -l opengl32 -l winmm -l gdi32