誰かがプロセスを理解するのを手伝ってくれませんか。
C ++ビジュアルスタジオ2010で
私はビジュアル スタジオ ソリューションを持っています (それを mysol と呼びましょう)
静的ライブラリとしてビルドされたプロジェクトがあります (staticprj と呼びましょう) staticprj は外部からライブラリを使用する必要があります (ext.lib と呼びましょう)
staticprj のソース コードの本文に、# include extlib.h を使用して外部ライブラリ ヘッダー ファイルをインクルードし、その関数の一部を呼び出します (それらを extfunctions() と呼びましょう)。ヘッダー ファイルの場所へのパスも含めます。 ext.lib。
staticprj はエラーなしで正常にコンパイルされます
mysol には、動的ライブラリ (dynprj) であり、staticprj に依存する別のプロジェクトもあります。
また、dynprj のソース ファイルでは、外部ライブラリの関数を使用します。
dynprj のソース コードに #include extlib.h を含めました。ヘッダー ファイルのパスを含めました。extlib.h を dynprj に直接添付しました。また、ext.lib をリンカー入力に追加しました (ext.lib が存在するパスと共に)。
extfunctions() が見つからないことを示す lnk2001 エラーがまだ発生します。
ext.lib をまったく使用しなくても、構造全体 (mysol ソリューション) は正常にコンパイルされます。
私の質問は、リンク プロセスがどのように機能するか、およびこのリンク エラーを修正するために何ができるかです。
(ext.lib が存在しなくても、staticprj と dynprj のリンクは問題ありません。コンパイルは問題なく動作し、コードも動作します。別の ext.lib を staticprj と dynprj にリンクして使用しようとすると、リンク エラーが発生するだけです。 ext.lib の関数)
前もって感謝します。