这些错误是什么意思?在一个项目上工作了2年多的时间之后,然后更改为使编译器遵循c ++ 14标准之后,我的项目现在无法编译,现在我很着急。
错误:
undefined reference to `_imp___ZN2sf7Texture12loadFromFileERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_4RectIiEE'|
错开了
_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
答案 0 :(得分:3)
答案 1 :(得分:2)
未定义的引用可能是SFML编译到您现在编译项目之间的编译器版本或配置不兼容。如果您下载了SFML的二进制版本,则应准确说明它可以使用的编译器和版本。如果您是从源代码构建的SFML,则只需使用当前的编译器配置对其进行重新构建即可解决此问题。
通常添加-std=c++14
或类似的作品(在具有相同标准库的完全相同的编译器上),但是在某些情况下(例如,库使用typedef或受宏保护的函数在接口中使用较新的类型)有空的时候。而且,如果更改了编译器或库的版本,则还有更多注意事项。