我最近开始学习c++,现在对c++有点熟悉了。但这是我的第一个 SFML 程序,我没有任何使用第三方库的经验。我制作了我的第一个 SFML 程序来打开一个窗口。但它不运行并抛出错误。
main.cpp
#include <iostream>
#include <SFML/Graphics.hpp>
int main() {
sf::Window playground = sf::Window(sf::VideoMode(640, 480), "Sanke");
while (playground.isOpen()) {
sf::Event event;
while (playground.pollEvent(event)) {
switch (event.type) {
case sf::Event::Closed:
playground.close();
break;
}
}
playground.display();
}
return 0;
}
我创建了一个 bat 文件来运行它。
main.bat
@echo off
g++ main.cpp -o main.exe -IC:/Users/USER/Desktop/project/SFML-2.5.1/include -LC:/Users/USER/Desktop/project/SFML-2.5.1/lib -lsfml-system -lsfml-graphics -lsfml-window -lsfml-audio -lsfml-network
main.exe
然后我把sfml/bin/下的dll文件全部放到工程目录下。当我运行 main.bat 文件时,它抛出了这个错误。
main.exe - Entry Point Not Found
The procedure entry point
_ZNSt15basic_streambuflcSt11char_traitslcEE7seekposESt4fpo
sliEST13_los_Openmode could not be located in the dynamic link library C:\Users\User\Desktop\project\sfml-system-2.dll
我搜索了几个小时。但我不知道如何解决这个问题。甚至遵循了一些教程。任何帮助将不胜感激。
这里有一些你可以尝试的事情:
确保您为编译器使用正确版本的 SFML。检查 SFML 网站以查看哪些版本与哪些编译器兼容。
检查您是否已将所有必需的 DLL 文件从 SFML bin 文件夹复制到您的项目目录。确保您拥有每个 DLL 文件的正确版本。
尝试使用不同版本的 SFML 库编译您的程序。如果安装了多个版本的 SFML,请尝试在编译器选项中指定不同的目录。
尝试使用不同的编译器。如果您使用的是 GCC,请尝试改用 Clang 或 Visual Studio。
检查您的 PATH 环境变量是否设置正确。确保 SFML bin 目录包含在您的 PATH 中。
最后,确保您已经安装了 SFML 所需的所有依赖项,例如 OpenGL 和 FreeType。