静的 C++ ライブラリ static.lib があり、shared.lib などの C++ 共有ライブラリからいくつかの関数を呼び出したいとします。出来ますか?
ここで、static.lib にリンクしているが shared.lib にはリンクしていない shared2.lib など、別の共有ライブラリがあるとします。この場合、リンカーは自動的に shared2.lib を shared.lib にリンクしますか?
Microsoft Visual Studio 2003 を使用しています。
静的 C++ ライブラリ static.lib があり、shared.lib などの C++ 共有ライブラリからいくつかの関数を呼び出したいとします。出来ますか?
ここで、static.lib にリンクしているが shared.lib にはリンクしていない shared2.lib など、別の共有ライブラリがあるとします。この場合、リンカーは自動的に shared2.lib を shared.lib にリンクしますか?
Microsoft Visual Studio 2003 を使用しています。
リンカーは他のライブラリを自動的に取り込みませんが、#pragma コメント (lib、"static.lib")を使用して、プラグマをヘッダー ファイルに追加することにより、追加のファイルをリンクするプロセスを簡素化できます。
静的 C++ ライブラリ static.lib があり、shared.lib などの C++ 共有ライブラリからいくつかの関数を呼び出したいとします。出来ますか?
はい、たとえば、静的ライブラリ内からウィンドウ関数を呼び出す場合、それらは通常、動的ライブラリからのものであるため、違いはありません。
ここで、static.lib にリンクしているが shared.lib にはリンクしていない shared2.lib など、別の共有ライブラリがあるとします。この場合、リンカーは自動的に shared2.lib を shared.lib にリンクしますか?
このような依存関係があると、後で問題が発生する可能性があります。代わりに、LoadLibrary()を使用してライブラリを動的にロードすることをお勧めします。これにより、コンパイル/リンク中にそのような依存関係を追跡する必要がなくなります。