下载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目录下

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐