2017-08-03 207 views
0

当试图编译C++代码,包括SFML API库,出现以下错误:内部编译器错误的Visual Studio社区2017 SFML API

Internal Compiler Error in 'C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.10.25017\bin\HostX86\x86\CL.exe' Choose the Technical Support command on the Visual C++ Help menu, Or open the help desk file for more information C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(358,5): error MSB6006: "CL.exe" Was terminated with code 2.

我搜索互联网上的解决方案为此,但我没能解决它... 当我问在Visual Studio论坛一些帮助,我得到的唯一答案是这样的:

“Thank you for your feedback! This issue has been fixed and it will be available in the next update to Visual Studio 2017. Thank you for helping us build a better 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

那么,如果这是从字面上你试图编译代码有2个语法错误:

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让你选择你想从IDE安装的东西。我刚刚安装的剩下的东西和它的工作,是一个兼容的问题:) –

+0

我得到的错误,如“姓名后面‘::’必须是类或命名空间名称”,并已经看过了5教程,近3天,没有运气发布它作为一个问题。你能帮我吗?谢谢(VS 2017,SFML 2015 32位) –

0

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

+0

这是一个臭虫内容时发生缺乏的IDE插件,我安装的是其他的东西IDE中,然后它工作得很好...... –

0

我下载的Visual Studio 2015年,并试图运行它的代码(SFML的所有教程是在由VS 2015年)和代码运行。

我相信问题是SFML的库都无法与2017年VS尚兼容,因此该解决方案很简单:

次使用的Visual Studio 2015年或

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

相关问题