我正在遵循版本2和CodeBlocks的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。该程序仍会构建然后崩溃
如果您使用的是最新的代码:: blocks版本,其中包括GCC 4.7.1,则必须自己重新编译SFML(或使用我的夜间构建),因为提供的仅用于GCC版本<4.7.x。
看来,您似乎没有设置要在项目内构建的静态库,而是使用SFML使用动态链接。几个月前设置SFML时,我也有类似的问题,请回想一下这句话:
此处显示的设置将导致您的应用程序被链接到SFML的动态版本,该版本需要DLL文件。如果您想摆脱这些DLL并将SFML直接集成到您的可执行文件中,则必须链接到静态版本。静态SFML库具有"调试"的" -s"后缀:" SFML-xxx-s-d",而" sfml-xxx-s"的发布。 在这种情况下,您还需要在项目的预处理器选项中定义sfml_static宏。
确保您在项目中包括静态文件
sfml-graphics-s-d //for debug
sfml-window-s-d //d for debug!
sfml-system-s-d
用于发布,省略D(SFML-Graphics-S)
接下来转到编译器设置 -> #defines 和type
SFML_STATIC
关于Visual Studio 2017和SFML-2.5.1,我建议本教程。设置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文件并粘贴在项目文件中。
好工作。问候。