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

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

尝试编译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 ++帮助菜单,或打开帮助台文件以获取更多信息C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Community \ Common7 \ IDE \ VC \ VCTargets \ Microsoft.CppCommon.targets(358,5) :错误MSB6006:“CL.exe”已终止代码2。

我在互联网上寻找解决方案,但我无法解决这个问题......当我在视觉工作室论坛上寻求帮助时,我得到的唯一答案是:

“感谢您的反馈意见!此问题已得到修复,将在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();

}
c++ visual-studio visual-c++ c++14 sfml
3个回答
1
投票

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


0
投票

我下载了visual studio 2015并尝试在其中运行代码(sfml的所有教程都是在vs 2015中制作的)并运行代码。

我认为问题是sfml的库与vs 2017不兼容,所以解决方案很简单:

- 使用Visual Studio 2015或

-recompile Visual Studio 2017的库(我不知道该怎么做)


0
投票

好吧,如果这是您尝试编译的代码,则有2个语法错误:

1.-第10行

mushroomTexture.getSize;

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

mushroomTexture.getSize();

2.-主要功能结束时缺少'}'。 (我想你只是没有正确地复制这个,但无论如何都要检查它。

    window.display();

    }
} <---- end of main() missing

如果这不能解决您的问题,那么您的VS版本可能有错误的SFML文件,如果您使用VS 2017下载Visual C ++ 14(2015) - 32位版本https://www.sfml-dev.org/download/sfml/2.4.2/它适用于VS 2015和2017(我在VS 2017上使用它测试你的例子,它运行没有问题)。

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