内部编译器错误Visual Studio Community 2017与SFML API
internal compiler error Visual Studio Community 2017 with SFML API
尝试编译 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上使用它来测试您的示例,它运行没有问题(。
- 如何使用Visual Studio 2017在C++中为参数化对象数组使用唯一指针
- SFML纹理像播放器
- 如何使用AngelScript注册SFML Vector2运算符
- 如何修复sfml c++代码编译错误
- SFML library: http request
- 落砂模拟碰撞检测C++和SFML
- 使用 SFML 和 C++ 将 Pixel 打印到屏幕上
- Visual Studio 2017循环自动向量化问题
- 有没有办法在远程设备上打开和编辑visual Studio 2017解决方案
- SFML RenderWindow打开窗口需要很长时间
- Visual Studio 2017 不允许我创建 C++ 专用模板
- 矢量下标超出SFML游戏中的范围
- 获取 SFML 窗口的 HWND 和高可用性?
- 将 Vulkan 与 SFML 结合使用?
- SFML 文本未绘制在窗口上
- 使用 Visual Studio 2017 编译 SFML
- 内部编译器错误Visual Studio Community 2017与SFML API
- SFML 2.4.2 for Visual C++ 2017 使用 SFML 的 2015 版本
- 如何在Visual Studio 2017中设置SFML?
- SFML 2.4.2 无法在 VS 2017 社区中绘制