在VS2022配置SFML与问题
我在前一段时间里根据某老师的视频成功在VS2022上配置了SFML,但是后面加载声音库的时候,出现了无法编译、找不到文件、无法启动等等问题我也不知道为什么,所以把所有东西都记录下来,以及我的解决办法
下载VS2022安装
这是官网https://www.microsoft.com/zh-cn
然后点击右上角所有microsoft或者Visual Studio

https://visualstudio.microsoft.com/zh-hans/
选择Community就好了,应该是免费的,别的版本我就不知道了

这是一个下载器,很快就会下好了,双击打开后选择继续会自动下载安装

然后是让你选择安装内容,我们只要选择【使用C++的桌面开发】就好(如果有别的需求安装也无所谓),说实话,很占地方(光这一个就不到9个G),右侧的安装详细信息不要尽量更改,不然后续有什么问题还得想办法解决

右下角选择安装,可能需要很长时间(看网速和机器配置),安装好之后选择启动,启动窗口会提示登录微软账户,没有特殊需求的不登陆也无所谓,我选择暂时跳过

开发设置选常规,颜色看自己喜好,黑色护眼,白色鲜明

点击启动后稍等一段时间,选择创建新项目
在这里插入图片描述

选择空项目或者控制台应用都可以,差不多

项目命名和改位置,尽量不要用中文吧,好多C++软件都对中文路径或名称不友好,不知道vs怎么样,勾选【将解决方案和项目放在同一目录】,点击创建

在右侧解决方案的源文件右键,添加,新建项,起名

简单写个代码测试


#include <iostream>
using namespace std;
int main() {
cout << "hello world" << endl;
return 0;
}
点击本地Windows调试器运行
下载SFML解压
官网https://www.sfml-dev.org/

下载地址https://www.sfml-dev.org/download.php

找一个合适版本

找个地方解压,尽量保证全英路径且方便打开,一会要用

vs2022配置SFML
其实网上已经有很多文章,但是我要说的是,多少都有问题啊,不是库不够就是配置完有问题,我以身试法,再发一次
官网英版教程在这里https://www.sfml-dev.org/tutorials/2.6/start-vc.php
第一种 静态配置
这个配置也是我找到的,不需要每次往项目里拷贝文件,不调用声音就没事,右键项目名称,属性

注意是项目名称,不是解决方案
所有配置
配置属性->调试->环境=>PATH=你的SFML解压路径\SFML\SFML-2.6.0\bin;%PATH%
比如我的路径是PATH=E:\study\SFML-2.6.0\bin;%PATH%
直接粘贴就好了,回车,点应用

所有配置
配置属性->c/c+±>常规->附加包含目录=>你的SFML解压路径\SFML-2.6.0\include
应用

所有配置
配置属性->c/c+±>预处理器->预处理定义=>SFML_STATIC
应用


所有配置
配置属性->链接器->常规->附加库目录=>你的SFML解压路径\SFML-2.6.0\lib
应用

Debug
配置属性->链接器->输入->附加依赖项=>
sfml-graphics-s-d.lib
sfml-window-s-d.lib
sfml-system-s-d.lib
sfml-audio-s-d.lib
sfml-main-d.lib
opengl32.lib
freetype.lib
winmm.lib
gdi32.lib
应用


Release
配置属性->链接器->输入->附加依赖项=>
sfml-graphics-s.lib
sfml-window-s.lib
sfml-system-s.lib
sfml-audio-s.lib
sfml-main.lib
opengl32.lib
freetype.lib
winmm.lib
gdi32.lib
应用


右键头文件,添加现有项,把include/SFML文件夹下所有文件加载进来



右键源文件,添加现有项,把lib文件夹下所有文件加载进来



运行程序吧,大公告成
测试
来自官网的测试代码
#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;
}

右边有一堆警告,我也不知道是啥,但是再次运行

方法二(方法一已解决,现阶段不推荐方法二)
第二种 动态链接配置
需要拷贝文件
所有配置
配置属性->调试->环境=>PATH=你的SFML解压路径\SFML-2.6.0\bin
比如我的路径是E:\study\SFML-2.6.0\bin
直接粘贴就好了,回车,点应用

所有配置
配置属性->c/c+±>常规->附加包含目录=>你的SFML解压路径\SFML-2.6.0\include
应用

所有配置
配置属性->链接器->常规->附加库目录=>你的SFML解压路径\SFML-2.6.0\lib
应用

Debug
配置属性->链接器->输入->附加依赖项=>
sfml-graphics-d.lib
sfml-window-d.lib
sfml-system-d.lib
sfml-audio-d.lib
sfml-main-d.lib
opengl32.lib
freetype.lib
winmm.lib
gdi32.lib
应用


Release
配置属性->链接器->输入->附加依赖项=>
sfml-graphics.lib
sfml-window.lib
sfml-system.lib
sfml-audio.lib
sfml-main.lib
opengl32.lib
freetype.lib
winmm.lib
gdi32.lib
应用


最后点确定,区别就是他没有SFML_STATIC,文件格式也写得不太一样
输入代码
#include <SFML/Graphics.hpp>
#include <SFML/Audio.hpp>
int main()
{
sf::RenderWindow window(sf::VideoMode(200, 200), "SFML works!");
sf::CircleShape shape(100.f);
shape.setFillColor(sf::Color::Green);
sf::SoundBuffer buffer;
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;
}
运行,这时候会提示找不到文件,同时项目里也会生成一个x64/debug文件夹


打开项目路径的方法是右键项目名,选择在文件资源管理器中打开文件夹

找到你SFML的bin文件夹,拷贝所有文件

放到debug里

再次运行项目

好了,而且右边也没有报错警告,但是麻烦的是每次新项目都要拷贝
本文主要介绍在VS2022上配置SFML的详细过程。包括VS2022的下载安装,选择使用C++的桌面开发;SFML的下载解压,需保证全英路径。还阐述了两种配置SFML的方法,即静态配置和动态链接配置,并分享了配置过程中遇到的问题及解决办法。
1万+

被折叠的 条评论
为什么被折叠?



