gpt4 book ai didi

c++ - SFML - 将 RenderTexture 保存到图像 0xC0000005 时访问冲突读取位置

转载 作者:行者123 更新时间:2023-11-30 04:52:34 31 4
gpt4 key购买 nike

我使用的是 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 包,每次我创建一个新项目并链接库时,我都从一个设置的文件夹中包含它们,也通过外部 lib 文件夹手动添加

第三次编辑

经过一些工作,我设法修复了调试库和发布库,现在代码抛出异常

Run-Time Check Failure #2 - Stack around the variable 'texture' was corrupted.

包含完整输出和代码的屏幕截图: enter image description here

另一件事是,当我继续而不处理它抛出的异常时:

Unhandled exception at 0x00D26859 in Project2.exe: Stack cookie instrumentation code detected a stack-based buffer overrun.

最佳答案

我最好的猜测是您以某种方式错误地链接了库。确保在调试配置中有调试库,在发布配置中有发布库。

请记住,调试库通常以“d”结尾。如果您没有正确设置调试库,则无法调试您的代码,这就可以解释为什么您会收到错误消息。

我离开 here有类似问题的人的 SFML 论坛链接。

希望对您有所帮助。


作为旁注,对于 的初学者我强烈建议使用 NuGet 包安装库(右键单击您的解决方案 -> 管理 NuGet 包 -> 查找 SFML -> 安装)

这适用于 SFML,不确定是否适用于 OpenGL。

关于c++ - SFML - 将 RenderTexture 保存到图像 0xC0000005 时访问冲突读取位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54331920/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com