Bonjour!
SVP j'ai créer une DLL avec Delphi que j'ai mis dans le répertoire System32 du Windows.
et je doit appeler une fonction contenue dans cette dll .
Comment faire pour indiquer l'emplacement de la DLL
Merci.
Bonjour!
SVP j'ai créer une DLL avec Delphi que j'ai mis dans le répertoire System32 du Windows.
et je doit appeler une fonction contenue dans cette dll .
Comment faire pour indiquer l'emplacement de la DLL
Merci.
Salut,
Si je ne me trompe pas, tu n'a rien a faire justement, car system32 fait partie de la liste des "paths" systême de windows... Il n'y a que la procedure loadlibrary('le nom de ta dll') à coder dans ton programme appelant...
Bonjour ,
peut etre je dois donné plus d'explication
si ma DLL se trouve dans le meme reprtoire de mon application pas de probleme.
mais je veux connaitre si cette DLL se trouve dans autre emplecement (exemple System32 (repertoire du Windows))
Code : Sélectionner tout - Visualiser dans une fenêtre à part procedure MaFonction; external MADLL.dll
ma question et comment indiquer l'emplacement de ma DLL.
bon developpment a tous.
+1, je confirme, tu ne te trompes pasEnvoyé par MedGIR
Merci a vous 2.
je vais testé immédiatement.
cordialement.
Voilà, quand un programme à besoin d'une DLL, il ne connait QUE son nom, il n'a besoin de rien d'autre pour l'utiliser.
C'est Windows qui se charge de lui trouver, et voici comment il s'y prend :
Il recherche la dll dans cet ordre d'emplacements possible
- Le répertoire de l'application qui appelle la dll (ou le répertoire de la Dll qui elle même cherche cette dll )
- Le répertoir courant de Windows (obtenu avec GetCurrentDir en Delphi ou Pascal et changé avec SetCurrenDir) (c'est la même chose que le chemin du prompt MS-Dos)
- Le répertoire système de Windows. La fonction API windows GetSystemDirectory permet d'obttenir ce chemin. (En général c'est c:\windows\system ou c:\windows\system32 )
- Le répertoire Windows. Qui peut être otenu avec GetWindowsDirectory (en général c:\Windows)
- Les répertoires listés dans la variable d'environnement PATH, pris dans l'ordre.
Il se peut donc que tu aies par exemple, ta dll dans le répertoire de ton application, et la même dans le répertoire Windows.
Ce sera celle située dans le répertoire de ton application qui sera donc prioritaire
Ce que j'ai déjà vu, c'est quelqu'un enlever la dll se trouvant dans le répertoire d'une application en disant "tu vois, ça marche, il n'a pas besoin de cette dll", mais en fait, c'est parce que la même dll était dans le répertoire système
Ne te mélange donc pas les pinceaux
Envoyé par waskol
Il n'y a pas aussi les dll enregistrées dans la base de registre avec regsvr32 qui permet de les mettre où l'on veut ?
ça, ce sont des services, pas des bibliothèques, le mécanisme d'accès est différent d'une dll classique, donc si je n'en ai pas parlé, c'est normal.Envoyé par Malatar
Elles n'ont pas besoin d'être appelés pour bosser toutes seules (c'est windows, en fait le client de ces dll)
Je dirais,qu'à la rigueur, celà rejoint le cas des dll dont le chemin est indiqué par la variable d'environnement path. effectivement, on peu dire qu'il y a une similarité, c'est assez similaire : la dll est à un emplacement particulier du disque dur, et le chemin est enregistré et connu par Windows
Non, ce n'est pas normal, c'est une erreur.Envoyé par waskol
Car même si Regsvr32 est fait pour registrer un service il permet de registrer des Dll et donc de passer par dessus la chaîne de gestion des priorités de windows.
Or si vous faîtes le test avec Midas.dll, vous comprendrez combien c'est important.
Car en fonction de la version de midas.dll utiliser un insertr dans un clientdataset fait un insert ou un append.
Or l'installation de Delphi 2005 par exemple registre son propre midas.
Donc si vous installer le dit produit sur un serveur qui possède plusieurs environnement de test avec différentes versions de Midas, vous "flinguez" toutes vos configs d'un coup.
a+
A bah vu sous cet angle alors....Envoyé par Yurck
Non, sans rire, un service EST une application à part entière, et c'est là ou je fais la différence avec la simple DLL. Comme on ne peut pas dopuble cliquer dessus pour démarrer l'application, on utilise regsrv32.
Donc ce dont tu me parles avec Midas c'est bien, mais quand bien même que tu n'as qu'une seule Midas.dll sur ton PC, je te défi de faire fonctionner correctement quoique ce soit ayant besoin d'elle sans l'avoir "démarré" avec RegSrv32
Une Dll "de base" (pas une ActiveX ou un objet COM, COM+), ça m'étonnerais que ça puisse passer avec regsrv32.
m'enfin bon, je me trompe peut-être, personne n'est infaillible
Merci a vous tous.
c'est la premiere fois que j'utilise les DLL , et c'est pour ca que j'ai posé cette question.
dailleur c'est grace a vous qu'on progresse.
bon developpement.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager