目录

  • 一、项目创建
  • 二、SFML的配置
    • 1、下载
    • 2、安装配置
      • 1.解压
      • 2.打开项目属性设置
      • 3.设置项目属性
        • a.配置include目录
        • b.配置lib目录
        • c.指定要添加到链接命令行的附加项
      • 4.测试
  • 三、其他废话

一、项目创建

  打开VS2019,选择新建控制台应用,做好命名和路径设置等基本工作,点击创建。
避免路径出现中文。

二、SFML的配置

1、下载

  打开官网:https://www.sfml-dev.org/
  找到Download界面,点击下载最新版本。官网下载界面

  根据需要下载,开发者说最好选择32位的版本,所以笔者选择下载Visual C++ 15(2017)-32-bit的版本。

2、安装配置

  进入Learn版块,进入Tutorials。


  在Getting started栏目下找到想要的指引教程,然后按照他说的去做就好了!

1.解压

下载到的文件到某个地方。笔者放在项目文件的边上。

2.打开项目属性设置

  在项目名称上右键,找到最下面的属性。

3.设置项目属性

 Now we need to tell the compiler where to find the SFML headers (.hpp files), and the linker where to find the SFML libraries (.lib files).
 In the project’s properties, add:
 The path to the SFML headers (/include) to C/C++ » General » Additional Include Directories
 The path to the SFML libraries (/lib) to Linker » General » Additional Library Directories

  也就是说告诉编译器SFML的.h文件和.lib文件在哪里。

a.配置include目录

  将配置改为所有配置。

找到“C/C++”下的“常规”,在右侧找到附加包含目录,点击右侧小箭头,点击编辑,出现一个新的窗口。

点击新窗口里第一个图标,下面会立即新建一行,点击"…"按钮选择路径。


在蹦出来的窗口找到刚才解压缩的SFML的文件夹,在里面找到并打开名为include的文件,然后点击选择路径按钮。注意选择到include路径就可以了,完成后会多出来一条路径。

b.配置lib目录

找到“链接器”下的“附加库目录”,点击右侧小箭头,点击编辑,出现一个新的窗口。

与上面的过程同理,点击新窗口里第一个图标,下面会立即新建一行,点击"…"按钮选择路径。

与上面的过程同理,这次是在里面找到并打开名为lib的文件,然后点击选择路径按钮。同样选择到lib路径就可以了。

c.指定要添加到链接命令行的附加项

 The next step is to link your application to the SFML libraries (.lib files) that your code will need. SFML is made of 5 modules (system, window, graphics, network and audio), and there’s one library for each of them.
 Libraries must be added in the project’s properties, in Linker » Input » Additional Dependencies. Add all the SFML libraries that you need, for example “sfml-graphics.lib”, “sfml-window.lib” and “sfml-system.lib”.

将需要的.lib文件链接到自己的项目。

lib文件夹里有以下这么多.lib文件,分别就是sfml的五个模块,audio,graphics,network,system,window,然后根据不同需要分为Release版和Debug版。-d用于Debug版,-s用于Release版。

开发选择-d版总是不会错的,所以首先将属性页里的配置改为Debug(注意确定保存刚才做的改动。),然后找到“链接器”下的“输入”模块,点击“附加依赖项”右侧的小箭头,点击编辑。

在窗口里写入以下五个文件名:
sfml-graphics-d.lib
sfml-system-d.lib
sfml-audio-d.lib
sfml-network-d.lib
sfml-window-d.lib
另外官方文档里还说了下面这段话,所以检查一下“继承的值”那个框里是不是已经有
opengl32.lib
winmm.lib
gdi32.lib
(其实不管有没有,加上就完事了)


以上就配置完毕了。

4.测试

开发者提供了如下的测试代码,复制入main函数运行测试。

#include <SFML/Graphics.hpp>int main()
{sf::RenderWindow window(sf::VideoMode(200, 200), "SFML works!");sf::CircleShape shape(100.f);shape.setFillColor(sf::Color::Green);while (window.isOpen()){sf::Event event;while (window.pollEvent(event)){if (event.type == sf::Event::Closed)window.close();}window.clear();window.draw(shape);window.display();}return 0;
}

如果成功配置,则结果如下。

好耶,一次成功,撒花~

三、其他废话

1、笔者用的是VS2019,下载的官网的VS2017-32bit的那个版本,是可以完美使用和运行的。
2、官网虽然都是英文但是都是很简单的英文,配图也很直观易懂,建议收藏。
  一开始有点抗拒英文阅读,所以总是百度。后来拥有了很多其他的开发经历,逐渐发现耐心阅读官方文档其实是程序员很重要的基本素养!绝大多数开发者文档都是最权威和详细的,遇到什么问题经常可以在其中找到最靠谱的答案。英文也没在怕的,读读就懂了!
3、

此段意思是:
  如果你想要摆脱这些DLLs(Dynamic Link Library,动态链接库),将SFML直接集成到可执行文件(.exe)中,则必须链接到静态版本。静态SFML库具有“-s”后缀:“sfml-xxx-s-d.lib”用于Debug版本,“sfml-xxx-s.lib”用于Release版本。
  在这种情况下,还需要在项目的预处理器选项中定义SFML_STATIC宏。

  这里涉及到静态链接和动态链接的区别问题,如下:
  静态库和应用程序编译在一起,在任何情况下都能运行,而动态库是动态链接,顾名思义就是在应用程序启动的时候才会链接,所以,当用户的系统上没有该动态库时,应用程序就会运行失败。

  仅开发所以就动态链接下,能运行就好。不过实际上感觉还蛮重要的,等最后全部完毕了再看下要不要解决吧!

[SFML]使用SFML复刻一个九宫幻卡小游戏(二)项目创建和SFML的配置相关推荐

  1. [SFML]使用SFML复刻一个九宫幻卡小游戏(一)前期规划和准备工作

    写在前面:   是笔者大二下的课内作业,要求是使用SFML制作棋牌类游戏.本人水平较差,复刻开发过程中存在大量走弯路.走邪门.代码冗余等情况.写此博客记录已经是一年以后的复盘了,仅作为个人学习的记录. ...

  2. 我用 MATLAB 复刻了抖音爆火小游戏 苹果蛇

    最近抖音上苹果蛇小游戏大火,为了证明MATLAB无所不能,咋能不跟风做一个?于是就有了这一篇. 还是提一句这个小游戏开始玩的心路历程: 第1-5关:?这不就是有重力的贪吃蛇,有任何难度嘛?? 第6关: ...

  3. Unity 游戏实例开发集合 之 CompoundBigWatermelon (简单合成一个大西瓜) 休闲小游戏快速实现

    Unity 游戏实例开发集合 之 CompoundBigWatermelon (简单合成一个大西瓜) 休闲小游戏快速实现 目录 Unity 游戏实例开发集合 之 CompoundBigWatermel ...

  4. python井字棋_用Python做一个井字棋小游戏

    井字棋是一个经典的小游戏,在九宫格上玩家轮流画OXO,当每列或每行或是两个对角成一线时便是获胜. 今天就用Python编写一个井字棋小游戏,与电脑对战. 程序执行画面如下图所示: 程序提供了两种人工智 ...

  5. python简单小游戏代码_一个简单的python小游戏---七彩同心圆

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理 用pygame做一个简单的python小游戏-七彩同心圆 玩法:每次点击鼠标时,会以鼠标为圆心,不断 ...

  6. python井字棋游戏人机对战_用Python做一个井字棋小游戏

    井字棋是一个经典的小游戏,在九宫格上玩家轮流画OXO,当每列或每行或是两个对角成一线时便是获胜. 今天就用Python编写一个井字棋小游戏,与电脑对战. 程序执行画面如下图所示: 程序提供了两种人工智 ...

  7. 分享一个蛋疼的俄罗斯方块小游戏

    分享一个蛋疼的俄罗斯方块小游戏 空间 转载请注明出处.http://www.cnblogs.com/dave_cn/ 我在Ubuntu 10.04下测试过,可以正常运行.不过界面让人蛋疼. 代码用到了 ...

  8. 基于C++控制台(Windows平台)的一个吃豆人小游戏

    PacManX --南京大学2019秋季学期 "高级程序设计 "课程设计一 基于C++控制台(Windows平台)的一个吃豆人小游戏 已实现的目标: 地图支持自定义编辑(可编辑地图 ...

  9. 玩一个猜数字的小游戏吧

    前言 大家一定都在聚会中玩过一个猜数字的小游戏吧? 就是主持人写下一个数字,在100以内,然后呢,大家就开始猜,每当一个人说出一个数字,主持人就说太大或者太小,然后慢慢的缩小范围,最后说对的人要接受惩 ...

最新文章

  1. MVC控件类型-HtmlHelper类
  2. 服务器客户端回射程序-自己设计包的结构
  3. Product settype list tool - report PROD_DISPLAY_SETTYPE
  4. DBCHM-最简单、实用的数据库表列批注维护工具
  5. 我为什么在这里写博客
  6. Zdenek Kalal的TLD Tracker(牛啊,学习!)
  7. Bitcoin-NG 可扩展的区块链协议
  8. 超级计算机预测2月有雪寒潮,干寒潮后,雪寒潮还要来?超级计算机:不确定性很大,需密切观察...
  9. java元类_元类 - 一心不乱 - 博客园
  10. ansible远程在Windows server 2012 R2 安装vcredist(2008 2010 2012 2013)
  11. 解决移动浏览器不能正确转化时间
  12. 从哪里寻找游戏工具集(Game dev toolset)开发的资料?
  13. 香港云服务器安全吗?
  14. linux unbuntu
  15. Problem F: 求三角形面积-gyy
  16. mysql table already_MySQL优化表时提示 Table is already up to date的解决方法
  17. n-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter convertView
  18. NAT穿越(NAT-T)原理
  19. 阿里云视频点播播放出错,控制台访问出现code:4400
  20. C# Hello World 实例

热门文章

  1. echarts结合阿里云地图json选择器展示地图
  2. Mybatis下传入时间条件,查询慢的优化方法
  3. 论文DepthTrack: Unveiling the Power of RGBD Tracking阅读及代码讲解
  4. 我国影视行业的痛点——影视链的目标
  5. Mac安装mactex清华源
  6. 一页纸需求的应对方法 —— 五步法
  7. “随意软件”是什么?
  8. 5G 网络的会话性管理上下文对比介绍
  9. 知乎:月薪2~3万,码农怎样度过一天
  10. 南通万豪酒店开业;诺瓦瓦克斯任命新任总裁兼CEO | 美通企业日报