【问题标题】:How to build this project? (jpeg lib)如何构建这个项目? (JPEG库)
【发布时间】:2011-12-04 13:58:58
【问题描述】:

编辑:我现在使用http://code.google.com/p/jpeg-compressor/,所以我不再关心这项工作了。

我下载了http://ijg.org/ 源代码,我尝试将其构建为 DLL 文件。 这是在我陷入死胡同之前我能建造的最远的地方。

我注意到有一些 .c 文件我必须删除,但我不知道我是否删除了正确的文件,至少有这些文件 jmemmac.cjmemdos.c 我认为我不需要。我不得不删除jmemmac.c,因为我在windows上编译,但它给出了更多错误,所以我一直在删除那些无用的文件,但现在我不知道该怎么办了。

这是我在构建时遇到的所有错误:

1>.\ansi2knr.c(273) : warning C4013: 'exit' undefined; assuming extern returning int

1>.\example.c(116) : warning C4013: 'exit' undefined; assuming extern returning int
1>.\example.c(379) : warning C4013: 'put_scanline_someplace' undefined; assuming extern returning int

1>ckconfig.obj : error LNK2005: _main already defined in wrjpgcom.obj
1>djpeg.obj : error LNK2005: _main already defined in wrjpgcom.obj
1>rdjpgcom.obj : error LNK2005: _main already defined in wrjpgcom.obj
1>jpegtran.obj : error LNK2005: _main already defined in wrjpgcom.obj
1>cjpeg.obj : error LNK2005: _main already defined in wrjpgcom.obj
1>ansi2knr.obj : error LNK2005: _main already defined in wrjpgcom.obj
1>jmemmgr.obj : error LNK2001: unresolved external symbol _jpeg_open_backing_store
1>jmemmgr.obj : error LNK2001: unresolved external symbol _jpeg_get_small
1>jmemmgr.obj : error LNK2001: unresolved external symbol _jpeg_mem_term
1>jmemmgr.obj : error LNK2001: unresolved external symbol _jpeg_free_large
1>jmemmgr.obj : error LNK2001: unresolved external symbol _jpeg_get_large
1>jmemmgr.obj : error LNK2001: unresolved external symbol _jpeg_mem_available
1>jmemmgr.obj : error LNK2001: unresolved external symbol _jpeg_free_small
1>jmemmgr.obj : error LNK2001: unresolved external symbol _jpeg_mem_init
1>example.obj : error LNK2001: unresolved external symbol _image_height
1>example.obj : error LNK2001: unresolved external symbol _image_buffer
1>example.obj : error LNK2001: unresolved external symbol _put_scanline_someplace
1>example.obj : error LNK2001: unresolved external symbol _image_width

【问题讨论】:

  • 您是否按照 install.txt 文件中的 Visual Studio 说明进行操作?你用的是哪个版本的VS?
  • 我没有...有数百万个文件,我不知道应该读哪个。无论如何;我现在使用code.google.com/p/jpeg-compressor,所以这个问题对我来说基本解决了。
  • 总是README 或某种形式的README.* 文件开头。该文件会将您指向install.txt 的方向。您需要熟悉库等通常是如何分发的。
  • @nicol,谢谢你的提示,下次试试。

标签: windows visual-c++ libjpeg ijg


【解决方案1】:

好的,如果您正在编译 DLL,您通常不需要任何“主”函数。我假设引用名为“main”或“_main”的函数的源文件是如何使用该库的示例,因此应该保存以摆脱这些。

在 jmemmac.c 中,有一个名为“jpeg_open_backing_store”的函数,这是 jmemmgr 抱怨的未解析的外部符号之一。该函数似乎具有依赖于平台的调用,例如 mac 的“FindFolder”函数。

我唯一能想到的就是研究 jmemmac.c、jmemdos.c 和 jmemansi.c 并重写这些函数,以便它们可以在 Windows 平台上运行。

哦,至于“exit”未定义,包括“stdlib.h”,因为它定义了退出函数。

【讨论】:

  • 感谢您的帮助,成功解决了 exit() 错误。但是这些函数仍然会出错,我什至在源代码的任何地方都找不到函数put_scanline_someplace! O_O 这是一团糟。我还删除了主要功能,但错误仍然存​​在。你知道任何只有 jpeg 保存功能的 jpeg 库吗?和 Windows 的 .lib/dll/h 文件?
  • 似乎这不再是问题了,有人告诉我更好的图书馆:code.google.com/p/jpeg-compressor
猜你喜欢
  • 2011-01-28
  • 1970-01-01
  • 2012-04-13
  • 2022-11-03
  • 2016-11-25
  • 2013-06-09
  • 1970-01-01
  • 2019-12-23
  • 1970-01-01
相关资源
最近更新 更多