编译器现在遵循C ++ 14标准,我的项目不再编译?神秘的SFML错误

问题描述 投票:-2回答:2

这些错误意味着什么?在一个项目工作了很长时间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
c++ codeblocks sfml
2个回答
3
投票

尝试将-DGLIBCXX_USE_CXX11_ABI=0添加到编译器开关(不知道如何使用CodeBlocks)。

查看详情herehere


2
投票

未定义的引用可能是编译SFML和编译项目之间的编译器版本或配置不兼容。如果你下载了SFML的二进制版本,它应该确切地说明它使用的编译器和版本。如果您从源代码构建了SFML,那么只需使用当前的编译器配置重建它就应该修复它。

通常添加-std=c++14或类似的工作(在完全相同的编译器上使用相同的标准库),但有一些边缘情况,例如当库使用typedef或受宏保护的函数时,在可用时在接口中使用较新的类型。如果编译器或库版本发生了变化,那么还有很多注意事项。

© www.soinside.com 2019 - 2024. All rights reserved.