我最近尝试更新我的游戏以存储压缩格式(JPEG 和 PNG)的图形。
虽然我最终选择了一个不同的库,但我最初的尝试是合并ijg来进行 JPEG 解压缩。然而,我什至无法让最简单的控制台应用程序工作,我想知道是否有人能够解释原因。
这是我的代码,它链接到jpeg.lib,它是 ijg 包的一部分:
#include "stdafx.h"
#include <stdio.h>
#include <assert.h>
#include <jpeglib.h>
int _tmain(int argc, _TCHAR* argv[])
{
struct jpeg_decompress_struct cinfo;
struct jpeg_error_mgr jerr;
JSAMPARRAY buffer;
int row_stride;
//initialize error handling
cinfo.err = jpeg_std_error(&jerr);
//initialize the decompression
jpeg_create_decompress(&cinfo);
FILE* infile;
errno_t err = fopen_s(&infile, "..\\Sample.jpg", "rb");
assert(err == 0);
//specify the input
jpeg_stdio_src(&cinfo, infile);
//read headers
(void) jpeg_read_header(&cinfo, TRUE);
return 0;
}
问题是调用jpeg_read_header()
失败并出现访问冲突:
JPEGTest.exe 中 0x7c91b1fa (ntdll.dll) 的未处理异常:0xC0000005:访问冲突写入位置 0x00000010。
有谁知道我可能做错了什么?