我在 64 位 Windows 7、MinGW 4.7.1 上使用 Code::Blocks。
我试图让 SFML 2.1 在代码块中与 MingW 一起工作,但它会导致问题。
当我尝试编译时出现这些错误:
undefined reference to
_imp___ZN2sf6StringC1EPKcRKSt6locale
undefined reference to
_imp___ZN2sf9VideoModeC1Ejjj
...
我正在链接以下库:
- sfml 图形
- sfml 窗口
- sfml 系统
我做错了什么?错误说 undefined reference ,但我已经关注了 these instructions一步一步。
最佳答案
当尝试链接库的静态版本时,您基本上也必须使用 header 的静态版本(否则您实际上是在错误的位置查找引用(更具体地说:使用错误的格式/修饰))。
因此,在链接静态版本时,请始终确保在包含任何 SFML header 之前定义了 SFML_STATIC
。
另外,确保链接库的静态版本(带有 -s
后缀)。
静态SFML
- 定义
SFML_STATIC
。 - 链接到 sfml-system-s、sfml-window-s、sfml-graphics-s 等(或它们的调试版本)。
动态 SFML
- 不要定义
SFML_STATIC
。 - 链接到 * sfml-system*、sfml-window、sfml-graphics 等(或其调试版本)。
关于c++ - SFML2 与 mingw32 : undefined references 的静态链接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23577963/