1

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

  • 下载并解压sdk

  • 添加了 sfml 头文件和库的路径

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

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

由于我是 c++ 和代码块的新手,我将不胜感激详细的回答。

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

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

4

3 回答 3

2

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

此处显示的设置将导致您的应用程序链接到 SFML 的动态版本,即需要 DLL 文件的版本。如果您想摆脱这些 DLL 并将 SFML 直接集成到您的可执行文件中,则必须链接到静态版本。静态 SFML 库具有“-s”后缀:“sfml-xxx-sd”用于调试,“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并输入

SFML_STATIC
于 2012-12-27T15:32:29.443 回答
2

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

于 2012-12-27T17:12:43.333 回答
0

关于 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. 在“Additional Dependencies”窗口中复制并粘贴: flac.lib; 自由类型.lib;ogg.lib;openal32.lib;sfml-audio.lib;sfml-音频-d.lib;sfml-音频-s.lib;sfml-audio-sd.lib;sfml-graphics.lib;sfml-图形-d.lib;sfml-图形-s.lib;sfml-图形-sd.lib;sfml-main.lib;sfml-main-d.lib;sfml-network.lib;sfml-网络-d.lib;sfml-network-s.lib;sfml-network-sd.lib;sfml-system.lib;sfml-系统-d.lib;sfml-系统-s.lib;sfml-系统-sd.lib;sfml-window.lib;sfml-window-d.lib;sfml-window-s.lib;sfml-window-sd.lib;vorbis.lib;vorbisenc.lib;vorbisfile.lib
6. 导航到 C: > ... > SFML2.5.1 > bin。复制所有 11 个 dll 文件并粘贴到项目文件夹中。

做得好。问候。

于 2019-01-31T14:40:43.070 回答