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

internal compiler error Visual Studio Community 2017 with SFML API

本文关键字:2017 SFML API Community Studio 编译器 错误 Visual 内部      更新时间:2023-10-16

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

"C:\Program Files (x86(\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.10.25017\bin\HostX86\x86\CL.exe"中的内部编译器错误 选择"可视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论坛上寻求帮助时,我得到的唯一答案是:

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

下面是带有错误的代码:

#include <SFMLGraphics.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,如果它是一个错误,我不会感到惊讶,因为它是VS的较新版本。同时,您可以尝试查找触发此错误的代码行,并找到替代解决方案或使用旧版本的Visual Studio。

我下载了Visual Studio 2015并尝试运行其中的代码(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(2015( - 32位版本 https://www.sfml-dev.org/download/sfml/2.4.2/它适用于VS 2015和2017(我在VS 2017上使用它来测试您的示例,它运行没有问题(。