0

我在我的 OpenGL 项目中使用libpng在 windows xp 下使用 VC6.0 加载 png 文件的纹理。构建没问题,运行过程中出现错误。错误是

the instruction at 0x0040b4a3 referenced memory at 0x00000008 the memory could not be written

我尝试重新启动,但错误仍然存​​在。而且我已经把exe文件放到另一个xp桌面上,错误仍然存​​在。

调试的时候发现这个语句出错了:(一般是和libpng一起用的)

png_read_png(png_ptr, info_ptr, PNG_TRANSFORM_STRIP_16 | PNG_TRANSFORM_PACKING | PNG_TRANSFORM_EXPAND, png_voidp_NULL);

错误信息是

Unhandled exception in test.exe(NTDLL.DLL): 0xc0000005: Access Violation.

我的代码在 fedora 下的 g++ 下运行良好,但在 windows XP 下的 VC6.0 下出现问题。


源代码很大,不知道哪里出错了,所以不知道这里贴什么代码。
有人对此有任何想法吗?
如果您能在这方面帮助我,我将不胜感激。谢谢!:)

4

1 回答 1

1

您是否检查了传递给函数的指针?其中之一可能具有值8而不是某些有效的内存地址。如果传递给 libpng 的数据正常,则错误可能在其他地方。

次要注意事项:有任何理由使用 VC++ 6.0 而不是任何较新(和免费)的 Express 版本?

于 2011-08-10T16:16:15.580 回答