代码之家  ›  专栏  ›  技术社区  ›  Lucas Bremm

内部编译器错误Visual Studio Community 2017 with SFML API

  •  0
  • Lucas Bremm  · 技术社区  · 7 年前

    当试图编译c++代码(包括sfml api库)时,会发生以下错误:

    “C:\Program Files(x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.10.25017\bin\HostX86\x86\CL.exe”中的内部编译器错误 选择Visual C++“帮助”菜单上的“技术支持”命令,或打开帮助台文件以获取详细信息

    当我在visual studio论坛上寻求帮助时,我得到的唯一答案是:

    感谢您的反馈!此问题已修复,将在Visual Studio 2017的下一次更新中提供。感谢您帮助我们构建更好的Visual Studio!

    #include <SFML\Graphics.hpp>
    
    int main() {
    
    sf::RenderWindow window(sf::VideoMode(640, 480), "Bouncing Mushroom");
    
    sf::Texture mushroomTexture;
    mushroomTexture.loadFromFile("mushroom.png");
    sf::Sprite mushroom(mushroomTexture);
    sf::Vector2u size = mushroomTexture.getSize;
    mushroom.setOrigin(size.x / 2, size.y / 2);
    sf::Vector2f increment(0.4f, 0.4f);
    
    while (window.isOpen())
    {
    sf::Event evnt;
    while (window.pollEvent(evnt))
    {
    if (evnt.type == sf::Event::Closed)
    window.close();
    }
    
    if ((mushroom.getPosition().x + (size.x / 2) > window.getSize().x && increment.x > 0) || (mushroom.getPosition().x - (size.x / 2) < 0 && increment.x < 0))
    {
    // Reverse the direction on X axis.
    increment.x = -increment.x;
    }
    
    if ((mushroom.getPosition().y + (size.y / 2) > window.getSize().y && increment.y > 0) || (mushroom.getPosition().y - (size.y / 2) < 0 && increment.y < 0))
    {
    // Reverse the direction on Y axis.
    increment.y = -increment.y;
    }
    
    mushroom.setPosition(mushroom.getPosition() + increment);
    window.clear(sf::Color(16, 16, 16, 255)); // Dark gray.
    window.draw(mushroom); // Drawing our sprite.
    window.display();
    
    }
    
    3 回复  |  直到 7 年前
        1
  •  2
  •   Devin L.    7 年前

    内部编译器错误通常意味着编译器有问题,如果它是VS 2017,如果它是一个bug,我不会感到惊讶,因为它是VS的新版本。同时,您可以尝试找到触发此bug的代码行,并找到替代解决方案,或使用旧版本的Visual Studio。

        2
  •  0
  •   Lucas Bremm    7 年前

    我认为问题在于,sfml的库与vs 2017尚不兼容,因此解决方案很简单:

    -使用Visual Studio 2015或

        3
  •  0
  •   Gerard097    7 年前

    如果这确实是您试图编译的代码,那么有2个语法错误:

    mushroomTexture.getSize;
    

    getSize是来自sf::Texture类的方法,不是成员,所以只需添加();

    mushroomTexture.getSize();
    

    2.-主函数末尾缺少一个“}”。(我认为你只是没有正确地复制这一个,但无论如何请检查一下。

        window.display();
    
        }
    } <---- end of main() missing
    

    Visual C++14(2015)-32位 版本 https://www.sfml-dev.org/download/sfml/2.4.2/