当前位置: 首页 > 知识库问答 >
问题:

带有SFML API的Visual Studio Community 2017内部编译器错误

齐献
2023-03-14

尝试编译 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\Common 7\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();

}

共有3个答案

韩乐湛
2023-03-14

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

1.-在第10行

mushroomTexture.getSize;

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

mushroomTexture.getSize();

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

    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

郭翰墨
2023-03-14

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

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

-使用Visual Studio 2015或

-重新编译Visual Studio 2017的库(我不知道怎么做)

梁研
2023-03-14

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

 类似资料:
  • 问题内容: 我在安装时遇到问题。我已经在本网站和其他网站上尝试了相关问题的解决方案,但无法解决问题。需要一些建议/解决方案。 执行后,我将提供完整的日志, 而且文件看起来像这样 命令显示这样的输出, 好像是内存问题。我正在参考这个问题的表格 问题答案: 在这种情况下,它与依赖关系无关,这是一个内存问题。 我在virtualbox VM中遇到了这个问题。我的解决方案是将分配给VM的内存从默认的512

  • 我无法在GWT中编译为js。 devmode一如既往地运行良好。我在编译器之间做了很多更改,所以不知道确切的位置。 什么可以解决这个问题? [gwt 2.5 AE 1.7.1] java.lang.RuntimeException:com.google.gwt.dev.javac.ComilationUnit.getTypes(CompilationUnit.java:324)的com.goole

  • 当我使用IntelliJ IDEA编译Java项目时,它会给出以下输出(和错误): 我对此感到很困惑!下面是我的设置:

  • 我有一个带有私有域的类,还有一个带有扩展外部类类型的泛型类型的静态抽象内部类,它试图访问外部类的私有字段,但出现以下错误:-错误:a在外部具有私有访问权限-错误:doSomething在外部具有私有访问权限 见下面的代码: 我正在用jdk 1.7编译 有人能告诉我为什么我得到这个错误。

  • 考虑以下示例: 我知道下界通配符接受通配符中给定类的所有超类(这里是IOException)。 为什么在上述情况下编译器会显示编译错误?