静的にリンクされた DLL の DLL 検索パスのカスタマイズ
DLL を静的にリンクすると、DLL が実行可能ファイルに確実に組み込まれますが、DLL のデフォルトの検索パスはDLL は実際の場所と一致しない可能性があります。これに対処するために、次のような検索パスを変更するさまざまなアプローチがあります:
-
動的読み込み: LoadLibrary("plugins/Plugin.dll") と GetProcAddress を利用してプラグインにアクセスする
-
環境の変更: システムの PATH 環境変数にプラグイン フォルダーへのパスを追加し、アプリケーションがそのフォルダー内の DLL を見つけられるようにします。
-
遅延ロード: 遅延ロード メカニズムを利用して、必要になるまでプラグイン アクセスを延期し、指定されたパスで DLL をロードするカスタム ヘルパー関数を作成できるようにします。
-
アセンブリ変換: plugins.dll をリストした .manifest ファイルを作成して、plugins フォルダーをアセンブリに変換します。 「プラグイン」をアプリケーションの依存アセンブリとしてマークし、アセンブリ内の DLL を検索するように指示します。
-
DLL パス操作によるスタブ実行: アプリケーションをスタブ実行可能ファイルに分割し、動的にロードされるコンポーネント。スタブ実行可能ファイルで、SetDllDirectory を呼び出してプラグイン フォルダーへのパスを指定し、LoadLibrary を呼び出してフル パスを使用して実際のプラグイン DLL をロードします。
以上が静的にリンクされた DLL の DLL 検索パスをカスタマイズするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。