внутренняя ошибка компилятора Visual Studio Community 2017 с SFML API

При попытке скомпилировать код на языке c ++, включая библиотеки API 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 \ Microsoft.CppCommon.targets (358,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();

}

0

Решение

Хорошо, если это буквально код, который вы пытаетесь скомпилировать, есть две синтаксические ошибки:

1.- В строке 10

mushroomTexture.getSize;

getSize — это метод из класса sf :: Texture, не являющийся членом, поэтому просто добавьте ();

mushroomTexture.getSize();

2.- В конце основной функции отсутствует «}». (Я думаю, что вы просто не скопировали это правильно, но все равно проверьте это.

    window.display();

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

Если это не решило вашу проблему, возможно, у вас неправильные SFML-файлы для вашей версии VS, если вы используете VS 2017, загрузите Visual C ++ 14 (2015) — 32-разрядная версия версия https://www.sfml-dev.org/download/sfml/2.4.2/ это работает для VS 2015 & 2017 (я использовал его на VS 2017, чтобы проверить ваш пример, и он запустился без проблем).

0

Другие решения

Внутренние ошибки компилятора обычно означают, что с компилятором что-то не так, и, видя, что это VS 2017, я не удивлюсь, если это будет ошибка, так как это более новая версия VS. Тем временем вы можете попытаться найти строку кода, которая вызывает эту ошибку, и найти альтернативное решение или использовать более старую версию Visual Studio.

1

Я скачал Visual Studio 2015 и попытался запустить код в нем (все учебные пособия по sfml сделаны в версии 2015) и запустить код.

Я считаю, что проблема в том, что библиотеки sfml еще не совместимы с vs 2017, поэтому решение простое:

-использовать Visual Studio 2015 или

-перекомпилировать библиотеки для Visual Studio 2017 (я не знаю, как это сделать)

0
По вопросам рекламы [email protected]