私はウェブを検索しましたが、私のクエリとは異なる回答をしています。私はWindowsの専門家ではありませんが、正確に理解したいと思います。コンパイル時にWindowsアプリケーションがDLLについて知る必要があります
アプリケーションがWindows用にコンパイルされている場合、コアライブラリkernel32.dllやその他のユーザー作成のdllを使用するなど、ライブラリ(DLL)のランタイムリンクの必要性が伴います。 dllは実行時より前に存在します。
私はdllにコンパイル時にリンクする必要がある.libファイルが付随する必要がありますが、.libファイルが必要でないことを示していることがあります。
アプリケーションは単に実行し、dllに必要な機能を見つけ出し、見つからない場合は失敗するでしょうか?
ありがとうございます。
はい。 DLLを見つけて関数をバインドするのは、OSローダーの仕事です。技術的には、LoadLibrary + GetProcAddressを使用して、プログラム自体によって動的に行うことができます。 COMは注目に値するですが、クラスファクトリであるエクスポートされた関数は1つだけ必要です。 –
異なる回答が表示される理由は、状況によって異なります。どんなものであれ、 'kernel32.lib'が必要です。なぜなら、LoadLibraryとGetProcAddressをどこから取得するのでしょうか。 [Nitpicksコーナー:はい、技術的には他の方法もありますが、OPの文脈では関係ありません。]通常、他のほとんどのDLLには '.lib'ファイルも使用します。しかし、あなたはそれらなしですることができます。また、プラグインなど、あらかじめわからない名前のDLLをロードする必要がある場合は、そうすることができます。 –