2015-11-26 87 views
-1

所以,我在C++中使用SFML制作游戏,但是当我尝试添加一个图像时,出现了一个非常奇怪的OpenGL(我认为)错误。根本没有任何意义。 首先我的控制台与随机文字和符号的垃圾邮件,然后应用程序崩溃和Visual Studio告诉我:运行我的SFML游戏时出现奇怪的错误?

Exception thrown at 0x618EDBF4 (vcruntime140.dll) in SFML_Game.exe: 0xC0000005: Access violation reading location 0x00C54000. 

这听起来像它有事情做与不能够阅读我说我的图片文件,尽管我不知道与它有什么不同。 图像的位置是在同一个文件夹我的“SFML_Game.vcxproj”是。

我也没有机会看到“无法加载播放器图像”是否在控制台中打印,因为垃圾邮件太快。

编辑我可以看到,画面未能立即加载,这里有一个图片...:

Console Picture

这里是我当前的代码:

#include<iostream> 
#include<SFML/Graphics.hpp> 
#include <string> 

int main(int argc, char* argv[]) 
{ 
    // Creates a window 
    sf::RenderWindow Window(sf::VideoMode(800, 600), "SFML Game Engine"); 

    sf::Texture pTexture; 
    sf::Sprite playerImage; 

    if (!pTexture.loadFromFile("Player.png")) 
    { 
     std::cout << "Could not load player image" << std::endl; 
    } 

    playerImage.setTexture(pTexture); 

    while (Window.isOpen()) 
    { 
     sf::Event Event; 
     while (Window.pollEvent(Event) && Window.hasFocus()) 
     { 
      switch (Event.type) 
      { 
      case sf::Event::Closed: 
       Window.close(); 
       break; 
      } 
     } 


     Window.draw(playerImage); 
     Window.display(); 
    } 
} 
+1

您测试了纹理是否无法加载,但继续工作...您应该以更好的方式处理该错误。 –

+0

该文件的位置应该是应用程序的*工作目录*。默认情况下,VS将其设置为生成的.exe所在的目录。您可以在“调试”下的项目选项中进行设置。 – molbdnilo

+0

@molbdnilo将它添加到exe文件所在的Debug文件夹中。它由于某种原因仍然无法加载图像。 – BiiX

回答

-1

所以,似乎我的代码很好,这是一个链接器错误。 我不知道静态 - 动态库,静态库和动态库之间的区别,所以我只是把它们全部放在那里,删除它们之后开始工作。 至少在调试模式下。

非常多,如果有其他人有这个问题,请查看如何在他们的网站上设置SFML而不是视频教程。 ^^