Utiliser une DLL à partir d'une autre DLL ca se fait ? - C++ - Programmation
Marsh Posté le 27-03-2003 à 10:11:48
Jamais essayé, mais je pense que ça doit pas poser de problèmes.
Marsh Posté le 27-03-2003 à 10:16:31
bon ben dès que je peux je teste
Si qqn a déjà fait qu'il le dise svp
Marsh Posté le 27-03-2003 à 10:17:10
vivi, g des dll qui utilisent une dll qui utilise une dll, ca pose pas de pb
Marsh Posté le 27-03-2003 à 10:19:56
ok merci a vous 2
et sinon, c possible d'utiliser une classe (externe à la DLL) ds une DLL ?
Marsh Posté le 27-03-2003 à 10:20:44
heuh ouais, si ladite classe a sa description dans un .lib que tu peux utiliser au link (attention au crt, c le merdier) ou exporter d'une autre dll...
Marsh Posté le 27-03-2003 à 15:43:51
c pas moi qui peux t'aider pour le moment
J'ai pas encore commencé avec Builder
Marsh Posté le 27-03-2003 à 15:44:55
ReplyMarsh Posté le 27-03-2003 à 17:20:07
polo021 a écrit : comment on fait deja pour integrer une dll a son projet? |
Je peux t'aider pour Visual C++ :
Pour intégrer une DLL à ton projet tu as deux possibilités :
Cependant ton application refusera de démarrer si elle n'est pas capable de trouver cette DLL. C'est comme ça que sont chargées les DLLs comme "Kernel32.dll", "User32.dll"...
Cette méthode a l'avantage d'être simple, mais elle nécessite l'utilisation d'un fichier ".lib" utilisé par le linker (sous Visual C++ 6, "Project"->"Settings"->"Link"->"Object/library modules" ).
Ici le gros problème est que l'utilisation n'est pas pratique. En effet, il faut utiliser "LoadLibrary" et "GetProcAddress" (sans oublier "FreeLibrary" ) pour charger les fonctions.
Cependant, cela permet une utilisation bien plus souple (il est possible de gérer les erreurs contrairement à l'autre utilisation).
Marsh Posté le 28-03-2003 à 14:56:56
gatorette a écrit : |
par contre tu es limite au std d'appel de fonction en C (pas de surcharge par ex), fo faire gaffe a ca
Marsh Posté le 28-03-2003 à 15:01:00
chrisbk a écrit : |
Et surtout tu ne peux plus partager de classes a moins d'inverser les dependances
Marsh Posté le 28-03-2003 à 15:01:55
BENB a écrit : |
roohh ca faisait bien lgtemps qu'on ne t'avait vu, toi
ca va ?
Marsh Posté le 28-03-2003 à 15:10:06
Utiliser une DLL à partir d'une autre DLL est tout à fait possible et très courant (fait un apperçu avec dependency walker et tu verras que bcp de dll utilisent kernel32 qui elle meme utilise ntdll ...).
Si tu réalise plusieurs dll qui s'utilisent mutuellement, il faut cependant faire attention à ce qu'elles n'aient pas la meme adresse de chargement par défaut, car elle vont entrer en collision et Windows va devoir les "rebaser" une à une, ce qui peut ralentir sensiblement leur chargement et donc celui de ton programme.
Marsh Posté le 28-03-2003 à 15:15:48
BENB a écrit : |
Qu'est-ce que tu veux dire par "inverser les dépendances" ?
Tu peux partager relativement simplement des classes en utilisant un système tel que COM ; et (si c'est ce que tu voulais dire) ta Dll ne sera pas dépendante de ton appli.
edit: correction de tags (j'ai un peu de mal, désolé)
Marsh Posté le 28-03-2003 à 15:20:18
chrisbk a écrit : |
Un peu crevee...
mais globalement ca va...
Et toi ?
Marsh Posté le 28-03-2003 à 15:21:25
BENB a écrit : |
peinard, a nouveau en stage en allemagne pas loin de la plage, boulot sympa, collocs sympa, bref, ca roule tranquille !
Marsh Posté le 28-03-2003 à 15:23:46
gatorette a écrit : |
Au contraire si la Dll qui est chargée explicitement a une dependance implicite vis a vis de l'executable qui la charge, alors elle peut importer des classes en provenances de cet executables, si elle utilise ces classes pour en faire des heritages, l'executable peut les reutiliser par polymorphisme et la dependance est inversee : celui qui charge explicitement ne dependant pas de celui qu'il charge...
Marsh Posté le 28-03-2003 à 15:26:15
chrisbk a écrit : |
Ben moi une tetrachiee de bugs qui est entrée...
du coup la grosse bourre...
La on sort un peu la tete, y a plus de bugs qui rentrent... enfin nos gentil developpeurs font une release dans un semaine... donc une semaine de repis avant une nouvelle vague de bugs... C'est ca la maintenance...
Marsh Posté le 29-03-2003 à 16:13:37
BENB a écrit : |
Euh, tu fais quoi dans la vie ? debugueur ?
Marsh Posté le 31-03-2003 à 13:10:18
Responsable maintenance...
On recupere les clients pas contents, et leur rapport d'anomalie, et au choix, on leur explique comment utiliser leur logiciel, ou on valide une anomalie.
Si on valide une anomalie, on fait une recherche d'anteriorite :
Existe deja, ou a deja existé sur ce produit ou un autre
Un recherche de regression : de quelle version date cette anomalie, est-elle presente sur les nouvelles versions
Une fois quer l'on a toutes ces infos on commence l'investigation : trouver l'origine de l'erreur...
Si l'erreur est simple, on corrige, on revalide, sinon on refile le bébé aux developpeurs du produit...
et on tient le client au courant...
Marsh Posté le 16-04-2004 à 18:13:49
oui mais vous faites comment exactement pour inclure la dll dans la dll?
precision 1), c'est dédié pour du C, en faite pour rendre gdiplus facilement utilisable en C.
precision 2) une autre dll a inclure a des fonctions surchargées, et ma dll qui inclue les deux autres va egalement en avoir (enfin si tout ca est possible ca m'arrangerai grandement.)
perso je debute completement, et j'employe la methode suivante (apparemment du loadtime) :
#include "gdiplus.h"
et dans les propriétés du projet (sous visual), editeur de lien, entrée, dependance supplementaire je lui colle gdiplus.lib
dans une classe ou un code tout bete ca fonctionne, parcontre si je fais ca dans ma dll j'obtiens tellement d'erreurs que la compil s'arrette, en bref il ne digere pas du tout la dll a inclure dans la dll.
Marsh Posté le 27-03-2003 à 09:55:25
Ou pas