ajouter DLL personnalisée chemin de recherche @ démarrage de l'application

Je suis de rayonnages de mon cerveau en essayant de trouver une solution élégante à un DLL problème de charge. J'ai une application qui statiquement des liens vers d'autres fichiers lib qui charge les Dll. Je ne suis pas le chargement de la Dll directement. J'aimerais avoir des Dll dans un autre dossier autre que le dossier que l'exécutable est dans. Quelque chose comme %working_folder%\dll - je préfère ne pas en avoir des dizaines (oui ... des dizaines) de la Dll dans mon %working_folder%.

Je suis en train de développer quelque chose qui fait partie de l'application principale qui va ajuster le chemin de recherche @ démarrage. Le problème, je suis en cours d'exécution, c'est que cette nouvelle DLL personnalisée chemin d'accès n'est pas dans le chemin de recherche du système. Lorsque je démarre l'application, elle se bloque (STATUS_DLL_NOT_FOUND) parce que la Dll ne sont pas dans les endroits appropriés. Ce que je voudrais faire est de vérifier @ démarrage si cette nouvelle DLL personnalisée dossier est dans le processus de la variable d'environnement chemin de recherche et si ne pas l'ajouter. Le problème est, l'application tente de charger tous ces Dll avant que l'application s'exécute une seule ligne de code.

Comment puis-je résoudre ce problème? J'ai envisagé d'écrire une application aide qui démarre en premier, ajuste les variables d'environnement de façon adéquate et le lance l'application via la fonction CreateProcess. Cela fonctionne, j'en suis sûr, mais il rend les choses difficiles sur les développeurs. Quand ils le débogage de l'application principale qu'ils ne vont pas lancer d'une aide de première application - non pas qu'ils pouvaient encore le faire.

J'ai essayé le registre chemin de app fonctionnalité, sans succès. Même poule et de l'œuf problème comme avant.

Que puis-je faire ici?

OriginalL'auteur | 2008-11-29

Leave a Reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *