与mingw32的SFML2静态链接错误:未定义的引用

时间:2014-05-10 06:40:48

标签: c++ linker-errors sfml undefined-reference

我在64位Windows 7,MinGW 4.7.1上使用Code :: Blocks。

我正在尝试让SFML 2.1在代码块中使用MingW,但这会导致问题。

当我尝试编译时,我得到了这些错误:

  

_imp___ZN2sf6StringC1EPKcRKSt6locale

的未定义引用      

_imp___ZN2sf9VideoModeC1Ejjj

的未定义引用      

...

我正在链接以下库:

  • SFML图形
  • SFML窗口
  • SFML系统

我做错了什么?错误表示未定义的引用,但我已经逐步遵循these instructions

1 个答案:

答案 0 :(得分:1)

当试图链接库的静态版本时,你基本上也必须使用标题的静态版本(否则你基本上是在错误的地方寻找引用(更具体地说:错误的地方)格式/装饰))。

因此,在链接静态版本时,请始终确保在包含任何SFML标头之前定义了SFML_STATIC

此外,请确保链接库的静态版本(后缀为-s)。


静态SFML

  • 定义SFML_STATIC
  • 链接到 sfml-system -s sfml-window -s sfml-graphics-s 等(或者他们的调试的版本)。

动态SFML

  • 定义SFML_STATIC
  • 链接到* sfml-system *, sfml-window sfml-graphics 等(或其调试版本)。