1

MSVC 2008 を使用して libjpeg LIB にリンクしようとしている DLL があり、libjpeg 関数に対して未解決の外部シンボル エラーが生成されます。また、まったく同じlibjpegライブラリファイルとリンクし、エラーなしでリンクし、正常に動作するテストプロジェクトもあります。

LIB パスと依存する LIBS リストの設定を 3 回確認し、EXE プロジェクトから DLL プロジェクトに文字通りコピー アンド ペーストしました。私はまだエラーが発生します。私は libjpeg に extern "C" で囲まれたヘッダーを含めているので、これは名前マングリングの問題ではなく、未解決の外部警告には、「不足している」libjpeg 関数が装飾されていないことが示されます (先頭のアンダースコアと @ 記号パラメーターのバイトカウントサフィックスがそれぞれの後にあるだけです)。名前)。

テスト EXE プロジェクトにはまったく問題がないのに、DLL プロジェクトのリンカが関数を正しく見つけられない原因は何ですか? ClanLib からダウンロードした、コンパイル済みの 32 ビット静的マルチスレッド デバッグ ライブラリを使用しています。

ありがとう、ロバート

4

1 に答える 1

1

多くの実験の後、私は解決策を見つけました。この問題は、DLL プロジェクトと LIB プロジェクトで使用される呼び出し規則の違いによるものであることが判明しました (MSVC 2008 では、これはプロジェクト プロパティの [構成プロパティ] -> [C/C++] -> [詳細] 設定で設定されます。DLL project は __stdcall に設定され、LIB は __cdecl でした。__stdcall を使用して LIBJPEG を再コンパイルすると、問題が修正されました。

于 2010-04-04T18:12:25.900 に答える