J'ai une DLL dans un répertoire perso.
Quand je fais une appli dans laquelle je linke le .lib correspondant, c'est
OK.
Mais à l'éxcution, windows m'affiche un message comme quoi il trouve ma DLL,
ce qui est normal puisqu'elle ne fiigure pas dans les répertoires de
recherche de windows.
Ma question est : comment rajouté mon répertoire perso aux répertoires de
recherche de windows afin qu'il trouve ma DLL ?
En effet j'aimerais éviter d'avoir à copier ma DLL dans le répertoire
SYSTEM32 de windows.
> Oui. De toutes façons, c'est toujours dynamique. Dans le cas de LoadLibrary, c'est un chargement explicite. Mais est-ce un problème? Au moins, vous aurez le contrôle du répertoire de chargement.
Oui mais, faut se cogner les GetProcAddress après... Et si c'est une dll C++ avec des classes exportées, c'est cher payé je trouve. Mieux vaut se créer un manifest.
-- Aurélien REGAT-BARREL
> Oui. De toutes façons, c'est toujours dynamique. Dans le cas de
LoadLibrary, c'est un chargement explicite. Mais est-ce un problème? Au
moins, vous aurez le contrôle du répertoire de chargement.
Oui mais, faut se cogner les GetProcAddress après... Et si c'est une dll C++
avec des classes exportées, c'est cher payé je trouve. Mieux vaut se créer
un manifest.
> Oui. De toutes façons, c'est toujours dynamique. Dans le cas de LoadLibrary, c'est un chargement explicite. Mais est-ce un problème? Au moins, vous aurez le contrôle du répertoire de chargement.
Oui mais, faut se cogner les GetProcAddress après... Et si c'est une dll C++ avec des classes exportées, c'est cher payé je trouve. Mieux vaut se créer un manifest.
-- Aurélien REGAT-BARREL
Patrick Philippot
Aurélien REGAT-BARREL wrote:
Oui mais, faut se cogner les GetProcAddress après...
Tout dépend du nombre de fonctions. Et encore. S'il y en a peu, ce n'est vraiment pas un souci. S'il y en a beaucoup, la technique de l'export en une fois via un tableau d'adresses (qui est alors le seul élément exporté) est assez efficace.
-- Patrick Philippot - Microsoft MVP [.Net] MainSoft Consulting Services www.mainsoft.xx (remplacez .xx par .fr si vous répondez par e-mail)
Aurélien REGAT-BARREL wrote:
Oui mais, faut se cogner les GetProcAddress après...
Tout dépend du nombre de fonctions. Et encore. S'il y en a peu, ce n'est
vraiment pas un souci. S'il y en a beaucoup, la technique de l'export en
une fois via un tableau d'adresses (qui est alors le seul élément
exporté) est assez efficace.
--
Patrick Philippot - Microsoft MVP [.Net]
MainSoft Consulting Services
www.mainsoft.xx
(remplacez .xx par .fr si vous répondez par e-mail)
Oui mais, faut se cogner les GetProcAddress après...
Tout dépend du nombre de fonctions. Et encore. S'il y en a peu, ce n'est vraiment pas un souci. S'il y en a beaucoup, la technique de l'export en une fois via un tableau d'adresses (qui est alors le seul élément exporté) est assez efficace.
-- Patrick Philippot - Microsoft MVP [.Net] MainSoft Consulting Services www.mainsoft.xx (remplacez .xx par .fr si vous répondez par e-mail)
Thierry
"Aurélien REGAT-BARREL" wrote in news:40911e85$0$26442$:
Ou utiliser un fichier de configuration créé à l'installation afin de préciser le chemin d'accès et préfixer le nom de la DLL avec le path au moment du chargement.
C'est valable que pour le linkage dynamique non ? Ou est-ce possible avec le delayed-load, technique dont je n'arrive pas à avoir d'infos ?
C'est possible avec le delay-load : se placer dans le bon repertoire, puis appeler au moins une fonction de chaque DLL a charger.
"Aurélien REGAT-BARREL" <nospam-aregatba@yahoo.fr.invalid> wrote in
news:40911e85$0$26442$626a14ce@news.free.fr:
Ou utiliser un fichier de configuration créé à l'installation afin de
préciser le chemin d'accès et préfixer le nom de la DLL avec le path au
moment du chargement.
C'est valable que pour le linkage dynamique non ?
Ou est-ce possible avec le delayed-load, technique dont je n'arrive pas à
avoir d'infos ?
C'est possible avec le delay-load : se placer dans le bon repertoire, puis
appeler au moins une fonction de chaque DLL a charger.
"Aurélien REGAT-BARREL" wrote in news:40911e85$0$26442$:
Ou utiliser un fichier de configuration créé à l'installation afin de préciser le chemin d'accès et préfixer le nom de la DLL avec le path au moment du chargement.
C'est valable que pour le linkage dynamique non ? Ou est-ce possible avec le delayed-load, technique dont je n'arrive pas à avoir d'infos ?
C'est possible avec le delay-load : se placer dans le bon repertoire, puis appeler au moins une fonction de chaque DLL a charger.
Aurélien REGAT-BARREL
> C'est possible avec le delay-load : se placer dans le bon repertoire, puis appeler au moins une fonction de chaque DLL a charger.
Comment ça marche exactement ? Comment indiquer quelle dll loader ?
-- Aurélien REGAT-BARREL
> C'est possible avec le delay-load : se placer dans le bon repertoire, puis
appeler au moins une fonction de chaque DLL a charger.
Comment ça marche exactement ?
Comment indiquer quelle dll loader ?
La DLL sera chargée lors de l'appel de la premiere fonction implementée dans cette DLL : ca permet de controler quand le chargement sera fait (se mettre dans le bon repertoire) sans avoir a faire des GetProcAddress, et de catcher soi-même les erreurs (try/catch) pour eviter la moche boite standard de Windows.
-- « Always look at the bright side of the life... »
Bonjour,
Thierry a écrit :
deux pragma : un pour lier avec delayimp, l'autre pour preciser la DLL a
charger en delay load.
je posterai demain, si j'y pense.
La DLL sera chargée lors de l'appel de la premiere fonction implementée
dans cette DLL : ca permet de controler quand le chargement sera fait (se
mettre dans le bon repertoire) sans avoir a faire des GetProcAddress, et de
catcher soi-même les erreurs (try/catch) pour eviter la moche boite
standard de Windows.
--
« Always look at the bright side of the life... »
La DLL sera chargée lors de l'appel de la premiere fonction implementée dans cette DLL : ca permet de controler quand le chargement sera fait (se mettre dans le bon repertoire) sans avoir a faire des GetProcAddress, et de catcher soi-même les erreurs (try/catch) pour eviter la moche boite standard de Windows.
-- « Always look at the bright side of the life... »