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

rbl8hiat  于 2023-05-08  发布在  其他
关注(0)|答案(1)|浏览(113)

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

然后我把所有的dll文件放在sfml/bin/到项目目录。当我运行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

我找了好几个小时。但我不知道该怎么解决。甚至有一些教程。任何帮助将不胜感激。

sf6xfgos

sf6xfgos1#

确保您的dll文件在正确的文件夹中。您可以在SFML官方网站https://www.sfml-dev.org/上找到dll文件的位置信息
另外,请确保您使用下面的构造函数创建窗口,而不是您的方式。这也是导致程序崩溃的错误。在这些变化之后,在linux和windows上用g++编译都可以工作。另外,如果您添加了window.hpp文件以确保安全,那就太好了。如果问题仍然存在,很可能是包含路径、库路径或dll路径(简而言之,文件的链接)有问题

#include <iostream>
#include <SFML/Graphics.hpp>
#include <SFML/Window.hpp>
int main() {
    sf::Window playground(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;
}

相关问题