C++ ライブラリの呼び出しに関する質問があります。ライブラリのコンパイルは成功です。その後、ライブラリは通常の実行可能プログラムによって呼び出されます。ただし、いくつかのリンク エラーが発生します。問題を説明するために例を示します。
古いバージョンの TIFF ライブラリ (バージョン 3.6.1) をダウンロードし、それを静的ライブラリにコンパイルしました: tiff.lib
. その後、ライブラリを呼び出して TIFF ファイルを読み書きする実行可能プログラムを作成しました。ただし、次のエラーが表示されます。
2>tiff.lib(tif_jpeg.obj) : error LNK2001: unresolved external symbol __TIFFmalloc
2>tiff.lib(tif_lzw.obj) : error LNK2001: unresolved external symbol __TIFFmalloc
2>tiff.lib(tif_dirinfo.obj) : error LNK2001: unresolved external symbol __TIFFmalloc
2>tiff.lib(tif_luv.obj) : error LNK2001: unresolved external symbol __TIFFmalloc
2>tiff.lib(tif_pixarlog.obj) : error LNK2001: unresolved external symbol __TIFFmalloc
2>tiff.lib(tif_zip.obj) : error LNK2001: unresolved external symbol __TIFFmalloc
2>tiff.lib(tif_dirwrite.obj) : error LNK2001: unresolved external symbol __TIFFmalloc
2>tiff.lib(tif_write.obj) : error LNK2001: unresolved external symbol __TIFFmalloc
2>tiff.lib(tif_dirread.obj) : error LNK2001: unresolved external symbol __TIFFmalloc
tiff.lib
正常にビルドされ、実行可能プログラムによって正常にリンクされているのに、リンク エラーが発生する理由がわかりません。に何か問題がある場合tiff.lib
は、lib をビルドするときのコンパイルおよびリンク手順中にリンク エラーが表示されるはずです。どんなアイデアでも大歓迎です!
編集:解決策を見つけるために、いくつかの詳細を追加します。tiff.lib
は静的ライブラリとして構築されておりdumpbin.exe /exports tiff.lib
、ライブラリにエクスポートされたすべての定義を表示するために使用すると、次のメッセージが表示されます。
Dump of file tiff.lib
File Type: LIBRARY
Summary
3B8 .bss
9405 .data
D5640 .debug$S
C38 .debug$T
C4E .drectve
19E79 .rdata
84 .rtc$IMZ
84 .rtc$TMZ
3363E .text
シンボルがエクスポートされていないようです。