2017-08-03 211 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年的庫(我不知道該怎麼做)

相關問題