(SFML,Code :: Blocks)"未定义的引用(...)" Texture.importFromFile(...)

时间:2018-03-05 18:06:52

标签: c++ codeblocks sfml

我决定尝试this YouTube video中描述的内容(使用C ++构建俄罗斯方块游戏)(我 提及视频以供参考)。

我有Code :: Blocks 17.12。我从their download page安装了SFML(GCC 4.9.2 TDM(SJLJ) - 32位),因为"编译器必须匹配100%"我还从其下载页面上提供的链接安装了TDM 4.9.2(32位)(在某种程度上忽略了这个细节之前没有遇到错误),并在Code :: Blocks中将其设置为我的编译器。 / p>

我按照SFML页面上的教程进行操作。我遇到了一些错误,但设法修复它们(例如上一个括号中提到的那个......等等)。一切都很顺利,所以我转到了YouTube视频中显示的代码。在代码

的位置
#include <SFML/Graphics.hpp>
#include <time.h>
using namespace sf;

int main()
{
   RenderWindow window(VideoMode(320, 480), "window");

   Texture t;
   t.loadFromFile("images/tiles.png");

   Sprite s(t);

   while (window.isOpen())
   {
       Event e;
       while (window.pollEvent(e))
       {
           if (e.type == Event::Closed)
           window.close();
       }
       window.clear(Color::White);
       window.display();
   }

   return 0;
}

(对于记录)我收到错误

||=== Build: Release in Tetris (compiler: GNU GCC Compiler) ===|
obj\Release\main.o:main.cpp:(.text.startup+0x24c)||undefined reference to `_imp___ZN2sf7Texture12loadFromFileERKNSt7__cxx1112basic_stringIcSt11char_traits
IcESaIcEEERKNS_4RectIiEE'|
||error: ld returned 1 exit status|
||=== Build failed: 2 error(s), 0 warning(s) (0 minute(s), 3 second(s)) ===|

这是我的问题。

An answer to a related SO question建议我理解为&#34;你必须在C :: B中使用相同的东西 编译器作为用于编译SMFL&#34;的编译器。但是我认为我确保了这一点。

Another related SO question我读过但却无法理解任何事情。我是一个完整的 noob to C / C ++并且不能做得多,不加思索地跟随 例如,方向是在SFML网站的教程中提供的......所以,如果有人可以帮助我,我会很感激 - 它可以被用来工作还是我必须自己构建SFML?

编辑:Here是我的链接器设置的屏幕截图。

1 个答案:

答案 0 :(得分:0)

您在评论中提供了this link,看起来您的链接器设置应如下所示:

sfml-window-s
sfml-system-s
opengl32
freetype
jpeg

当我尝试使用SFML时,我遇到了与此类似的问题,并且正确顺序的链接器设置是问题。