下载sfml库文件及对应的编译器
去官方网站下载最新版本的sfml库文件,我这里下载的是SFML2.6.1,同时下载对应的gcc编译器
这里下载的是64位的库文件:GCC 13.1.0 MinGW (SEH) - 64-bit以及对应的gcc编译器:WinLibs MSVCRT 13.1.0 (64-bit)。下载后解压,我这里是解压到了C盘的根目录下,解压后的路径分别是C:\SFML-2.6.1和C:\mingw64
配置环境变量
在系统变量的Path中分别添加sfml开发库的bin目录和编译器的bin目录,如下图所示:
添加完环境变量后,打开PowerShell或者Cmd,输入g++ -v,如果成功输出,表示环境变量配置成功。
vscode配置
创建一个新文件夹,我这里是SFML,然后用vscode打开。
vscode安装如图所示的几款插件:
按住快捷键Ctrl+Shift+P,输入C/C++,选择C/C++:编辑配置(JSON)
会在SFML文件夹下产生一个.vscode文件夹,同时打开一个名为c_cpp_properties.json的文件。
编辑文件,在includePath下添加mingw的include路径和sfml的include的路径,同时修改"compilerPath":的g++编译器路径
在sfml目录下新建一个test.cpp文件,按Ctrl+F5快捷键运行程序,在弹出的配置中选择“C/C++:g++.exe生成和调试活动文件”,在.vscode中生成tasks.json文件
在args中添加sfml头文件的路径和库文件的路径,以及编译时需要链接的库
配置完后,在test.cpp文件中输入下面的测试代码,看看能否正确编译运行
#include <SFML/Window.hpp>
int main()
{
sf::Window window(sf::VideoMode(800, 600), "SFML works!");
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
/* code */
if (event.type == sf::Event::Closed)
window.close();
}
}
}
如果编译运行成功,则会弹出如下窗口
按住快捷键Ctrl+Shift+P,输入C/C++,选择C/C++:添加调试配置(JSON)
选择:
在.vscode下生成launch.json文件
确保preLaunchTask配置的内容与tasks.json中的label标签内容一致。
配置Code Runner:
快捷键Ctrl+Shift+P,输入settings,生成settings.json文件,在文件中输入如下三行代码:
"code-runner.runInTerminal": true,
"code-runner.saveFileBeforeRun": true,
"code-runner.executorMap"
接着在第三行代码后输入:号,会自动产生后面的代码,找到包含CPP的行,加入sfml头文件路径、sfml库路径以及要链接的库:-lsfml-graphics -lsfml-window -lsfml-system
点击右上角的Run Code按钮,同样可以编译运行程序。
配置环境时遇到的问题
配置完环境后,编译成功,但是运行程序无法弹出窗口,且没有任何输出打印;而在文件夹内手动执行程序,会弹出错误提示:无法定位程序输入点 _Zst28_throw_bad_array_new_lengthv于动态链接库...上,如下图所示
有两种解决办法:
1.从C:\mingw64\bin目录下拷贝libstdc++-6.dll文件到当前要运行的程序目录下;
2.拷贝libstdc++-6.dll到C:\Windows\System32目录下