0

私たちのアプリケーションでは、dll ファイルを動的にロードしますが、これも他の dll への静的バインディングを持っています。

これまで、この dll はすべてアプリケーション フォルダーにありました。これからは、これらの dll をディレクトリ構造に移動します。dll をロードするフォルダーは、実行時に決定されます。(バージョニング/動的更新...)

質問 1 : 動的にロードされたライブラリに、特定のフォルダ内の静的にロードされたライブラリを探すように強制する最良の方法は何ですか?

質問 2 : 古いバージョンのライブラリがアプリケーション フォルダに残っている場合、アプリケーション フォルダからスタティック ライブラリが読み込まれないようにするにはどうすればよいですか?

(ところで、これは win32 アプリケーションです...)

4

1 に答える 1

3

第 1 四半期については、 を検討する必要がありますSetDllDirectory。アプリケーション フォルダ内の DLL (古い DLL など) が引き続き優先されるという条件付きで、後続のすべての DLL 検索に影響します。

質問 2 はすぐに答えられます。それが望ましくない場合は、暗黙的な DLL の読み込みを使用しないでください。を使用LoadLibraryExし、フル パスを使用します。これが、Windows による検索を防止する唯一の方法です。

于 2010-12-10T14:39:35.430 に答える