0

編集:私は今http://code.google.com/p/jpeg-compressor/を使用しているので、私はもうこの仕事をすることを気にしません。

http://ijg.org/ソースコードをダウンロードし、DLLファイルとして作成してみました。これは、行き止まりになるまで私が構築できる最も遠いものです。

削除しなければならない.cファイルがいくつかあることに気づきましたが、正しいファイルを削除したかどうかはわかりません。少なくともこれらのファイルがjmemmac.cあり、jmemdos.c必要ないと考えました。Windowsでコンパイルするために削除するjmemmac.c必要がありましたが、エラーが増えたため、これらの役に立たないファイルを削除し続けましたが、今はもう何をすべきかわかりません。

ビルド時に発生したすべてのエラーは次のとおりです。

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
4

1 に答える 1

0

わかりました、DLL をコンパイルしている場合、通常、「メイン」関数は必要ありません。「main」または「_main」と呼ばれる関数を参照するソース ファイルは、ライブラリの使用方法の例であると想定しているため、それらを取り除くために保存する必要があります。

jmemmac.c には、「jpeg_open_backing_store」という関数があります。これは、jmemmgr が不満を言っている未解決の外部シンボルの 1 つです。この関数には、Mac の「FindFolder」関数など、プラットフォームに依存する呼び出しがあるようです。

私が考えられる唯一のことは、jmemmac.c、jmemdos.c、および jmemansi.c を調べて、それらの関数を Windows プラットフォームで動作するように書き直すことです。

ああ、「exit」が定義されていないことについては、exit 関数を定義しているため、「stdlib.h」を含めてください。

于 2011-12-04T14:32:57.723 に答える