如何建立这个项目? (jpeg lib)

时间:2011-12-04 13:58:59

标签: windows visual-c++ libjpeg ijg

编辑:我现在正在使用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

1 个答案:

答案 0 :(得分:0)

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

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

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

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