虽然我最终选择了另一个库,但我最初的尝试是使用 ijg 来进行JPEG解压缩。然而,我无法使甚至最简单的控制台应用程序工作,并且想知道是否有人能够阐明原因。
这是我的代码,它链接到 ijg 包中的 jpeg.lib:
#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()
时出现了访问冲突导致失败:
有人有任何想法我可能做错了什么吗?未处理的异常 0xC0000005:访问位置 0x00000010 时写入权限错误, 在 JPEGTest.exe 中的 0x7c91b1fa (ntdll.dll)。