Странные проблемы с линковкой SFML [дубликат]

167
25 марта 2019, 09:20

На данный вопрос уже ответили:

  • Ссылка на неразрешенный внешний символ (возможные причины) 2 ответа

Я подключил SFML через этот CMakeLists.txt

include(mgw.cmake)
cmake_minimum_required(VERSION 2.8)
project(SFMLINCLUDETEST)
set(SFML_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/SFMLMGW/include)
set(SFML_LIB_DIR ${CMAKE_SOURCE_DIR}/SFMLMGW/lib)
#message(${SFML_LIB_DIR})
set(SFML_LIBRARIES
    ${SFML_LIB_DIR}/libsfml-graphics-s-d.a
    ${SFML_LIB_DIR}/libsfml-window-s-d.a
    ${SFML_LIB_DIR}/libsfml-system-s-d.a)
set(SFML_DEPENDENCIES
    opengl32
    winmm
    gdi32
    ${SFML_LIB_DIR}/libfreetype.a
    )

include_directories(${SFML_INCLUDE_DIR})

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DSFML_STATIC -static-libgcc -static-libstdc++")
add_executable(${PROJECT_NAME} "main.cpp")
target_link_libraries(${PROJECT_NAME} ${SFML_LIBRARIES} ${SFML_DEPENDENCIES})

Файл mgw.cmake просто говорит что нужно использовать mingw:

set(CMAKE_SYSTEM_NAME Windows)
set(TOOLCHAIN_PREFIX i686-w64-mingw32)
# cross compilers to use for C and C++
set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc)
set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++)
set(CMAKE_RC_COMPILER ${TOOLCHAIN_PREFIX}-windres)
# target environment on the build host system
#   set 1st to dir with the cross compiler's C/C++ headers/libs
set(CMAKE_FIND_ROOT_PATH /usr/${TOOLCHAIN_PREFIX})
# modify default behavior of FIND_XXX() commands to
# search for headers/libs in the target environment and
# search for programs in the build host environment
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

И у меня появляются ошибки такого рода:

../SFMLMGW/lib/libsfml-graphics-s-d.a(Texture.cpp.obj): In function `ZN2sf7TextureC2Ev':
D:\Programming\C++\Releases\MinGW32-PosixDwarf730r0\build-SFML\src\SFML\Graphics/D:/Programming/C++/Releases/_Sources/SFML/src/SFML/Graphics/Texture.cpp:72: undefined reference to `_Unwind_Resume'

и.т.д.

Как это исправить?

Если нужно:

Система: Linux Mint 19 tara

версия mingw: 7.3

версия SFML: 2.5.1

папка SFMLMGW лежит рядом с CMakeLists.txt

Как я понимаю это проблемы не CMakeLists.txt а компилятора, ведь файл CMakeLists.txt легко собирается

Answer 1

Такое ощущение, что вы схватили какие-то собранные библиотеки и они оказываются несовместимыми с остальным (в плане обработки исключений). Попробуйте собрать sfml самостоятельно, с использованием тех же настроек, что и в проекте.

READ ALSO
Почему возникает ошибка: Cannot open include file: 'QImage': No such file or directory?

Почему возникает ошибка: Cannot open include file: 'QImage': No such file or directory?

QtCreator не видит библиотеку QImage, хотя сам мне её предлагает в списке

148
Java - чтение файла

Java - чтение файла

Компилирую проект в jar-файлЗапускаю

198
Поиск даты вида “February 4,2000” в Java

Поиск даты вида “February 4,2000” в Java

"Все даты представить в формате «ddmm

142
Автообновление приложения [android]

Автообновление приложения [android]

Вылетает ошибка на андроиде 7+ и 8+ (6 и ниже - все как надо) при автообновлении приложенияКод:

202