加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 使用ijg支持JPEG – 获取访问冲突

发布时间:2020-12-16 10:38:10 所属栏目:百科 来源:网络整理
导读:我最近尝试更新 my game以压缩格式(JPEG和PNG)存储图形. 虽然我最终选择了另一个库,但我最初的尝试是将ijg与JPEG解压缩结合起来.但是,我甚至无法使最简单的控制台应用程序工作,我想知道是否有人可能能够阐明原因. 这是我的代码,它链接到作为ijg包的一部分的j
我最近尝试更新 my game以压缩格式(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()的调用因访问冲突而失败:

Unhandled exception at 0x7c91b1fa
(ntdll.dll) in JPEGTest.exe:
0xC0000005: Access violation writing
location 0x00000010.

有没有人有任何想法我可能做错了什么?

解决方法

我刚遇到同样的问题(虽然我试图对图像进行编码).
显然,FILE *在DLL之间不可移植,因此您不能使用任何将FILE *作为参数的libjpeg API.

有几种解决方案,但它们都归结为必须重建库:

>将库构建为静态库,并将其链接到您的应用程序.这就是我所做的,它解决了我的问题.>将源/目标处理程序移出libjpeg并进入应用程序.然后你可以将libjpeg构建为静态库或DLL,以适合你的方式.我不确定这是否可行,但它是与源代码一起分发的“install.doc”文件中的建议解决方案.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读