компилятор теперь соответствует стандартам C ++ 14, мой проект больше не компилируется?загадочные ошибки SFML - PullRequest
0 голосов
/ 03 октября 2018

Что означают эти ошибки?После того, как я проработал над проектом два с лишним года, а затем перешел на компилятор, соответствующий стандартам c ++ 14, мой проект теперь не компилируется, и теперь я остаюсь взволнованным, не зная.

ошибка (и):

undefined reference to `_imp___ZN2sf7Texture12loadFromFileERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_4RectIiEE'|

Demangled, то есть

_imp__sf::Texture::loadFromFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, sf::Rect<int> const&)

Настройки моего компилятора

Пусть g ++ следует C ++ 14

Linker Settings:  (the dependencies order SFML requires)  sfml-graphics  
                  sfml-window
                  sfml-system
                  sfml-audio

Compiler: C:\CodeBlocks\SFML-2.4.2\include
Linker:   C:\CodeBlocks\SFML-2.4.2\lib

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

Неопределенная ссылка может быть несовместимостью версии компилятора или конфигурации между моментом компиляции SFML и компиляцией вашего проекта.Если вы загрузили бинарную сборку SFML, в ней должно быть точно указано, с каким компилятором и версией он работает.Если вы собрали SFML из исходного кода, просто исправьте его с помощью текущей конфигурации компилятора.

Обычно добавляется -std=c++14 или такие работы (на точно таком же компиляторе с той же стандартной библиотекой), но естькрайние случаи, например, когда библиотека использует typedefs или функции, защищенные макросами, чтобы использовать новые типы в интерфейсе, когда они доступны.И если версии компилятора или библиотеки изменились, то есть еще много соображений.

0 голосов
/ 03 октября 2018

Попробуйте добавить -DGLIBCXX_USE_CXX11_ABI=0 к вашим переключателям компилятора (не знаете, как это сделать с помощью CodeBlocks).

Подробнее здесь и здесь .

...