设置sfml

时间:2012-12-27 15:23:05

标签: c++ graphics installation codeblocks sfml

我正在关注版本2和代码块的sfml入门指南,并完成了教程告诉我要做的所有事情:

  • 下载并解压缩了sdk

  • 添加了sfml标头和库的路径

  • 链接库图形,窗口和系统

但示例代码不起作用。我收到sfml-graphics-d-2.dll缺失的错误消息。编译工作,窗口打开但仍保持黑色,弹出此错误。 这是教程的链接 http://www.sfml-dev.org/tutorials/2.0/start-cb.php

由于我是c ++和codeblocks的新手,我将非常感谢您的详细解答。

更新: 我已将SFML dll复制到可执行文件中。现在我的程序崩溃了。我不知道为什么。它与教程中使用的代码完全相同。

更新: 我已将链接库更改为-s版本并添加了#define SFML_STATIC。该程序仍然构建然后崩溃

3 个答案:

答案 0 :(得分:2)

您似乎没有设置要在项目中构建的静态库,而是使用与SFML的动态链接。几个月前设置SFML时我遇到了类似的问题,回想起这句话:

  

此处显示的设置将导致您的应用程序链接到SFML的动态版本,即需要DLL文件的版本。如果要删除这些DLL并将SFML直接集成到可执行文件中,则必须链接到静态版本。静态SFML库具有“-s”后缀:“sfml-xxx-s-d”用于Debug,“sfml-xxx-s”用于Release。   在这种情况下,您还需要在项目的预处理器选项中定义SFML_STATIC宏。

确保在项目中包含静态文件

sfml-graphics-s-d //for debug
sfml-window-s-d   //d for debug!
sfml-system-s-d

发布,省略d(sfml-graphics-s)

接下来转到编译器设置 - > #Defines 并输入

SFML_STATIC

答案 1 :(得分:2)

如果您使用的是包含GCC 4.7.1的最新Code :: Blocks版本,那么您必须自己重新编译SFML(或使用我的Nightly Builds),因为提供的版本仅适用于GCC版本< 4.7.x。

答案 2 :(得分:0)

关于Visual Studio 2017和SFML-2.5.1,我建议使用this教程。设置SFML类似于设置SDL,GLFW,freeGLUT和GLEW,但有两个特点:.lib文件是29,而.dll是11。简要地说,我建议:
1.上传SFML并选择第一个“下载”。复制下载的文件夹并粘贴到在C:中创建的文件夹中。
2.创建一个空项目。
3.使用C:... \ SFML-2.5.1 \ include配置“其他包含目录”。
4.使用C:... \ SFML-2.5.1 \ lib配置“其他库目录”。
5.在“其他依赖项”窗口中,复制并粘贴: flac.lib; freetype.lib; ogg.lib; openal32.lib; sfml-audio.lib; sfml-audio-d.lib; sfml-audio-s.lib; sfml-audio-s-d.lib; sfml-graphics.lib; sfml-graphics-d.lib; sfml-graphics-s.lib; sfml-graphics-s-d.lib; sfml-main.lib; sfml-main-d.lib; sfml-network.lib; sfml-network-d.lib; sfml-network-s.lib; sfml-network-s-d.lib; sfml-system.lib; sfml-system-d.lib; sfml-system-s.lib; sfml-system-s-d.lib; sfml-window.lib; sfml-window-d.lib; sfml-window-s.lib; sfml-window-s-d.lib; vorbis.lib; vorbisenc.lib; vorbisfile.lib
6.导航至C:> ...> SFML2.5.1> bin。复制所有11个dll文件并粘贴到项目文件夹中。

干得好。问候。