内部编译器错误Visual Studio Community 2017与SFML API 编译C++代码时,包括SFML API库,发生以下错误:

内部编译器错误Visual Studio Community 2017与SFML API 编译C++代码时,包括SFML API库,发生以下错误:,c++,visual-studio,visual-c++,c++14,sfml,C++,Visual Studio,Visual C++,C++14,Sfml,“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\Micr

“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.cppcomon.targets358,5:错误MSB6006:CL.exe以代码2终止

我在互联网上搜索了这个问题的解决方案,但我无法解决它。。。 当我在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();

}

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

我下载了Visual Studio 2015并尝试在iTunes中运行该代码。所有sfml教程都是在vs 2015中制作的,代码都可以运行

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

-使用Visual Studio 2015或


-重新编译Visual Studio 2017的库我不知道如何执行该操作如果这是您试图编译的代码,则有2个语法错误:

1.-第10行

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

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

    window.display();

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

<>如果这不能解决你的问题,那么你可能会为你的VS版本提供错误的SFML文件,如果你使用VS 2017下载Visual C++ 14 14 -32位版本,它对VS 2015和2017工作,我在VS 2017上使用它来测试你的例子,它没有问题。新版本的VS允许您从IDE中选择要安装的内容。我刚刚安装了其余的东西,它工作了,这是一个兼容的问题:我遇到了一些错误,例如名称后面跟“:”必须是类或名称空间名称,并且已经看了5个教程,差不多3天了,也没有运气把它作为一个问题发布。你能帮忙吗?感谢VS 2017,SFML 2015 32 bitIt是一个因IDE中缺少插件而出现的bug,我安装了IDE中的其他东西,然后它运行良好。。。