2010-12-10 43 views
0

Dans notre application, nous chargeons dynamiquement un fichier dll, qui a de nouveau des liaisons statiques avec les autres DLL.Forcer le chargement statique de la DLL à partir du répertoire donné

Jusqu'à maintenant, toutes ces DLL ont été dans notre dossier d'application. A partir de maintenant, nous voulons déplacer ces DLL dans une structure de répertoires. Le dossier à partir duquel la DLL doit être chargée doit être déterminé lors de l'exécution. (versionnage/mises à jour dynamiques ...)

Question 1: Quelle est la meilleure façon de forcer la bibliothèque chargée dynamiquement à rechercher des bibliothèques chargées statiques dans un dossier donné?

Question 2: Comment pouvons-nous empêcher qu'il charge les bibliothèques statiques du dossier de l'application si une ancienne version des bibliothèques est laissée là?

(BTW, il est une application win32 ...)

Répondre

3

Pour Q1 vous devriez regarder dans SetDllDirectory. Il affecte toutes les recherches DLL suivantes, à condition que les DLL dans le dossier de l'application (telles que vos anciennes DLL) aient toujours la priorité.

La réponse à la question 2 est immédiatement: si vous ne le souhaitez pas, n'utilisez pas le chargement implicite de DLL. Utilisez LoadLibraryEx et utilisez un chemin d'accès complet. C'est le seul moyen d'empêcher Windows de chercher.

+0

LoadLibraryEx semble prometteur. Merci. – Vegar