最近、グラフィックを圧縮形式 (JPEG および PNG) で保存するようにゲームを更新しようとしていました。
最終的に別のライブラリに落ち着きましたが、最初の試みは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()
アクセス違反で失敗することです。
JPEGTest.exe の 0x7c91b1fa (ntdll.dll) で未処理の例外: 0xC0000005: アクセス違反書き込み場所 0x00000010。
私が間違っているかもしれないことを誰かが知っていますか?