我正在使用Visual Studio 2017.在调试时,它指向第11行
texture.getTexture().copyToImage().saveToFile("C:/test.bmp");
有错误
Project2.exe中0x54B06B9E(sfml-graphics-2.dll)抛出异常:0xC0000005:访问冲突读取位置0xCCE6C37F。
我想将纹理保存到.bmp文件。
#include<iostream>
#include<SFML/Graphics.hpp>
int main()
{
using namespace sf;
RenderTexture texture;
texture.create(800, 600);
texture.display();
texture.clear(Color::Black);
texture.getTexture().copyToImage().saveToFile("C:/test.bmp");
return 0;
}
至于我们检测到它是导致问题的.saveToFile("C:/test.bmp")
片段,代码在没有它的情况下正常工作
我手动获得了SFML包,每次我创建一个新项目并链接库时我都会从set文件夹中包含它们,也可以通过外部lib文件夹手动添加
经过一些工作,我设法修复了调试库和发布库,现在代码抛出异常
运行时检查失败#2 - 变量'texture'周围的堆栈已损坏。
另一件事是,当我继续没有处理异常时,它会向我抛出:
Project2.exe中0x00D26859处的未处理异常:堆栈cookie检测代码检测到基于堆栈的缓冲区溢出。
我找到了答案,问题是我没有使用为VS 2017编译的.dll,我使用的是2015年编译的那些,切换它们,它就像一个魅力