|
Dernière réponse | |
---|---|
Sujet : [DLL + VC] comment on utilise une DLL qu'on a créé ? | |
godbout | ah :/ :D |
Aperçu |
---|
Vue Rapide de la discussion |
---|
godbout | ah :/ :D |
darkoli |
|
godbout | De rien, j'en ai chie aussi pour m'y mettre :D |
darkoli |
|
godbout | Peut etre une histoire d'allocation memoire, de pointeur perdu, etc... |
godbout | arf alors la je sais pas trop comment faire :/ |
darkoli |
|
darkoli |
|
godbout | Ben normallement oui :D
Par contre comme j'ai dit c'est du loadtime, donc tu link avec un lib, tu ballades ta dll avec ton prog, sans laquelle il ne peut pas marcher. L'autre facon c'est du runtime, style plugin. |
darkoli |
|
godbout | Je t'ai file deux exemples a telecharger un peu plus haut. Regarde comment j'ai fait ca t'aidera surement. |
darkoli | Euh Donc pour la dll c'est bon, en faitil faut ecrire :
__declspec(dllexport) char* service1_1(char* demande); Par contre dans le programme qui utilise je mets le prototype : __declspec(dllimport) char* service1_1(char* demande); Et la ça compile toujours. Mais des que je veux utiliser la fonction : resultat=service1_1("toto" ); Ca compile plus !!! (enfin ça link plus).
|
darkoli |
|
LetoII | dans ton code source tu met
|
godbout |
|
godbout | Bon j'ai pas trop le temps.
Je sais pas si tu veux faire du loadtime (avec un lib) ou du runtime (getprocaddress + loadlibrary). Donc j'ai fait un petit exemple pour le loadtime. Tu peux d/l ca ici: Y a l'exe http://site.voila.fr/godbout/Testexe.exe Et la dll http://site.voila.fr/godbout/Testdll.exe |
darkoli | Y'a plus qu'une erreur.
char* __declspec(dllexport)ma_fonction(char*); C'est le prototype de la fonction dans le .h de la dll (qui ne contient que ça), et VC me donne une erreur de "type" sans plus de precisions. Sans le __declspec(dllexport) ca compile bien mais si j'ai bien compris ma fonction n'est pas exportée ? |
darkoli |
|
darkoli |
|
godbout | Un exemple si ca peut t'aider ;)
dans le .h
|
darkoli | Donc dans le .h : "la_dll_a_darkoli.h"
je dois mettre :
|
godbout | Soit un lib + .h, loadtime (si je dis pas de connerie)
Soit juste un GetProcAddress + LoadLibrary (runtime) |
LetoII | tu met juste
|
darkoli |
|
smaragdus |
|
darkoli |
|
bjone | je dirais:
Implicite: Tu rajoutes le petit .LIB généré à la compilation de la DLL, dans le projet de l'EXE. Explicite: tu charges la DLL avec LoadLibrary et GetProcAddress.... |
darkoli |
|
darkoli |
|
smaragdus | Tu n'as pas précisé si * tu faisais un lien implicte ou explicite ? * DLL : win32 ou MFC ? * declspec(dllimport) + header ou bien GetProcAdress ? |
LetoII | Je pense que tu doit avoir à inclure le .lib de la DLL dans ton projet. |
darkoli | J'ai une DLL avec une fonction du type char* nom_fonction(char* chaine).
Sachant que je pars de 0 avec VC et que j'ai ma dll et le .lib associé et le source aussi (au cas où). Que dois je faire pour utiliser cette dll ? 1° Un nouveau projet je pense. 2° Declaration de la fonction externe ? 3° Inclusion quelconque (en rapport avec la dll) ? 4° ? ... X° Compiler la mini aplli qui fait juste un appel à la dll. (transfert d'une chaine de caracteres, et affiche de la chaine retournee par la fonction). PS : au cas ou, la dll possede un mode debug et créée un fichier .log a chaque chargement (d'elle meme). |