3

所以我在 Windows 上使用 libjpeg 时遇到了一个问题,导致 jpeg_read_header() 崩溃。

这个问题(相当搞笑)在这里描述:http: //sourceforge.net/projects/gnuwin32/forums/forum/74807/topic/1629371 ?message=4053776

我已经决定第三个选项,它不使用 jpeg_stdio_src/dest API。但是,经过大量谷歌搜索,我似乎找不到帖子末尾提到的“将数据输入 libjpeg 的其他方法”,有人能指出我正确的地方吗?

4

5 回答 5

2

Sompe 人们报告了在较新的 Visual Studio 中针对 msvcrt 链接问题的解决方法。通过谷歌搜索msvcrt.dll “visual studio”找到

于 2010-11-03T22:44:53.143 回答
1

“提供数据的其他方式”之一是这些函数:

  1. jpeg_CreateDecompress
  2. jpeg_read_header
  3. jpeg_start_decompress
  4. jpeg_read_raw_data / jpeg_read_scanlines
  5. jpeg_destroy_decompress
于 2010-11-03T22:50:57.123 回答
1

如果我正确理解了这个问题,那是因为 Windows 中所有各种文件句柄之间的差异。它们并非都相互兼容。

这个链接会有帮助吗?它告诉你如何在它们之间进行转换。然后,您可以为该函数提供正确类型的文件句柄并使其运行。

http://www.codeproject.com/KB/files/handles.aspx

或者,不要使用该 jpeg 库并使用另一个。没有我可以特别推荐的,因为我以前不需要使用 jpeg 库。

于 2010-11-03T22:43:05.513 回答
1

我有一个类似的问题,在寻找解决方案时遇到了这篇文章。最终,我只是弄乱了代码,因为直接从文件中读取对我来说至关重要。为了解决这个问题,我做了以下事情:

// Declare needed structs
struct jpeg_decompress_struct dinfo;
struct jpeg_error_mgr jerr;

// Open file
FILE * infile = fopen("myimage.jpg", "rw");

// Create error manager instance
dinfo.err = jpeg_std_error(&jerr);

// Decompression process
jpeg_create_decompress(&dinfo);
jpeg_stdio_src(&dinfo, infile);
jpeg_read_header(&dinfo, TRUE);

// ... remainder of program

执行此操作后,这两个功能可以正常工作并且符合预期...我不确定为什么这解决了我的问题,但我会接受。希望这对其他人有帮助。

于 2019-05-29T19:15:11.627 回答
1

我最近在使用 libjppeg-turbo 时遇到了同样的问题。我不想重新编译库或将 mscvr.dll 链接到我的 vs2015 应用程序。

这个功能对我有用:jpeg_mem_src(...)而不是使用jpeg_stdio_src. 因为它没有将任何 C 运行时结构传递给库,所以它工作得很好。函数定义可以在这里找到链接

它从内存缓冲区而不是文件获取输入数据,如果您的文件不是太大/内存不是太大的问题,它可以工作。

于 2016-08-25T02:17:42.290 回答