SFML - 将 RenderTexture 保存到图像 0xC0000005 时访问冲突读取位置
SFML - Access violation reading location when saving RenderTexture to image 0xC0000005
我使用的是 Visual Studio 2017。
调试时它指向第 11 行
texture.getTexture().copyToImage().saveToFile("C:/test.bmp");
有错误
Exception thrown at 0x54B06B9E (sfml-graphics-2.dll) in Project2.exe:
0xC0000005: Access violation reading location 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 包,每次创建新项目时我都会从一个设置的文件夹中包含它们,link 库,也通过外部 lib 文件夹手动添加
第三次编辑
经过一些工作,我设法修复了调试库和发布库,现在代码抛出异常
Run-Time Check Failure #2 - Stack around the variable 'texture' was corrupted.
包含完整输出和代码的屏幕截图:
另一件事是,当我继续而不处理它向我抛出的异常时:
Unhandled exception at 0x00D26859 in Project2.exe: Stack cookie instrumentation code detected a stack-based buffer overrun.
我最好的猜测是您 link 以某种方式错误地访问了库。
确保在调试配置中有调试库,在发布配置中有发布库。
请记住,调试库通常以 "d" 结尾。如果你没有正确设置调试库,你就不能调试你的代码,这就解释了为什么你会收到 poor 错误消息。
我将 here 一个 link 留给有类似问题的人到 SFML 论坛。
希望对您有所帮助。
作为旁注,对于 sfml 的初学者,我强烈建议使用 NuGet 包安装库(右键单击您的解决方案 -> 管理 NuGet 包 -> 查找 SFML -> 安装)
这适用于 SFML,不确定是否适用于 OpenGL。
我找到了答案,问题是我没有使用为 VS 2017 编译的 .dll,我使用的是为 2015 编译的那些,切换了它们,它就像一个魅力
我使用的是 Visual Studio 2017。 调试时它指向第 11 行
texture.getTexture().copyToImage().saveToFile("C:/test.bmp");
有错误
Exception thrown at 0x54B06B9E (sfml-graphics-2.dll) in Project2.exe: 0xC0000005: Access violation reading location 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 包,每次创建新项目时我都会从一个设置的文件夹中包含它们,link 库,也通过外部 lib 文件夹手动添加
第三次编辑
经过一些工作,我设法修复了调试库和发布库,现在代码抛出异常
Run-Time Check Failure #2 - Stack around the variable 'texture' was corrupted.
包含完整输出和代码的屏幕截图:
另一件事是,当我继续而不处理它向我抛出的异常时:
Unhandled exception at 0x00D26859 in Project2.exe: Stack cookie instrumentation code detected a stack-based buffer overrun.
我最好的猜测是您 link 以某种方式错误地访问了库。 确保在调试配置中有调试库,在发布配置中有发布库。
请记住,调试库通常以 "d" 结尾。如果你没有正确设置调试库,你就不能调试你的代码,这就解释了为什么你会收到 poor 错误消息。
我将 here 一个 link 留给有类似问题的人到 SFML 论坛。
希望对您有所帮助。
作为旁注,对于 sfml 的初学者,我强烈建议使用 NuGet 包安装库(右键单击您的解决方案 -> 管理 NuGet 包 -> 查找 SFML -> 安装)
这适用于 SFML,不确定是否适用于 OpenGL。
我找到了答案,问题是我没有使用为 VS 2017 编译的 .dll,我使用的是为 2015 编译的那些,切换了它们,它就像一个魅力