这些错误意味着什么?在一个项目工作了很长时间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
未定义的引用可能是编译SFML和编译项目之间的编译器版本或配置不兼容。如果你下载了SFML的二进制版本,它应该确切地说明它使用的编译器和版本。如果您从源代码构建了SFML,那么只需使用当前的编译器配置重建它就应该修复它。
通常添加-std=c++14
或类似的工作(在完全相同的编译器上使用相同的标准库),但有一些边缘情况,例如当库使用typedef或受宏保护的函数时,在可用时在接口中使用较新的类型。如果编译器或库版本发生了变化,那么还有很多注意事项。