SFML c++ 程序在运行时抛出错误“找不到入口点”

问题描述 投票:0回答:1

我最近开始学习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

我搜索了几个小时。但我不知道如何解决这个问题。甚至遵循了一些教程。任何帮助将不胜感激。

c++ g++ sfml
1个回答
0
投票

这里有一些你可以尝试的事情:

确保您为编译器使用正确版本的 SFML。检查 SFML 网站以查看哪些版本与哪些编译器兼容。

检查您是否已将所有必需的 DLL 文件从 SFML bin 文件夹复制到您的项目目录。确保您拥有每个 DLL 文件的正确版本。

尝试使用不同版本的 SFML 库编译您的程序。如果安装了多个版本的 SFML,请尝试在编译器选项中指定不同的目录。

尝试使用不同的编译器。如果您使用的是 GCC,请尝试改用 Clang 或 Visual Studio。

检查您的 PATH 环境变量是否设置正确。确保 SFML bin 目录包含在您的 PATH 中。

最后,确保您已经安装了 SFML 所需的所有依赖项,例如 OpenGL 和 FreeType。

© www.soinside.com 2019 - 2024. All rights reserved.