0

このコードを libjpeg の例からコピーし、標準ファイルを渡します。

FILE *soureFile;
if ((soureFile = fopen(sourceFilename, "rb")) == NULL)
{
    fprintf(stderr, "can't open %s\n", sourceFilename);
    exit(1);
}

jpeg_stdio_src(&jpegDecompress, soureFile);
jpeg_read_header(&jpegDecompress, true);

情報を含まないファイル ポインターが生成されるため、最終行でアクセス違反が発生します。何か案は?

編集: Tobiasのアドバイスでは、fopenはファイルを正常に開いているように見えますが、jpeg_read_headerはアクセス違反で失敗しています。

編集: ijg で JPEG サポートをもう少し掘り下げた後- アクセス違反を取得

4

2 に答える 2

2

strerror または perror を使用して正確な理由を取得します。

FILE *soureFile;
if ((soureFile = fopen(sourceFilename, "rb")) == NULL)
{
    perror("fopen failed");
    exit(1);
}
于 2009-06-02T12:18:36.163 に答える
1

select壊れていない」。

fopen有効なファイル ポインターが返され、jpeg_read_headerそれを使用できない場合は、これら 2 つのステートメントの間に誰かが悪いことをしたことになります。

中間の唯一のものはjpg_stdio_src呼び出しであり、すべての前提条件が満たされていれば失敗しません。

jpg_stdio_src結論:失敗する理由を確認してください。jpeg_create_decompress私の推測では、マクロを使用して構築する必要があります。

于 2009-06-02T13:00:42.680 に答える