Bonjour,
je fais un programme en C++ qui fait appel à une fonction située dans une DLL, toutefois comment indiquer la référence à cette DLL pour que la fonction appelée soit identifier.
merci,![]()
Bonjour,
je fais un programme en C++ qui fait appel à une fonction située dans une DLL, toutefois comment indiquer la référence à cette DLL pour que la fonction appelée soit identifier.
merci,![]()
quel type de dll ? tu as un .Lib ? un .h ? un objet com ? une assembly ?
la DLL qui m'intéresse est généré à partir d'un projet.
c'est toujours pas la réponse que j'attends
admettons que ca soit une dll classique alors, dans ce projet, tu dois avoir un fichier .h avec les entetes de ta fonction. Il te suffit d'inclure ce fichier et de lier le .lib généré à la compilation de ce projet
Le projet qui génère la DLL génère bien un .lib ( dont le poids est bien plus faible que la dll) mais je n'ai pas de .h associé génèré.
Qu'appele tu lier le .lib ?
PS : je suis sous Visual Studio 2005 !
Le .h n'est pas généré. C'est généralement un .h qui sert à compiler la DLL.
Si la DLL est bien faite, le header contient ce genre de définitions:
Code Header de DLL C/C++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 #ifdef UNEDLL_EXPORTS #define UNEDLLAPI __declspec(dllexport) #else #define UNEDLLAPI __declspec(dllimport) #endif #ifdef __cplusplus extern "C" { #endif UNEDLLAPI void UneFonction(int *unParametre); UNEDLLAPI int UneAutreFonction(void); #ifdef __cplusplus } #endif
C'est ce header qui doit être inclus dans le programme utilisateur pour déclarer les fonctions.
Quand au .lib, il faut l'ajouter aux options du linker pour le programme utilisateur (dans "additional libraries" ou un truc du genre).
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
oui j'ai un .h pour ça, enfin disons que j'ai un .h dans le code de la DLL qui possède ça :
#ifdef __cplusplus
extern "C" {
#endif
UNEDLLAPI void UneFonction(int *unParametre);
UNEDLLAPI int UneAutreFonction(void);
#ifdef __cplusplus
}
#endif
UNEDLLAPI doit bien être défini quelque part, non?
Pour le programme utilisateur, il doit se résoudre en __declspec(dllimport).
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
ça c'est dans ma DLL, mais je ne sais pas quoi faire pour appeler cette fonction dans mon programme de test.#ifdef __cplusplus
extern "C" {
#endif
/*
* Inclusions
*/
#include <stddef.h>
extern unsigned short API_ENTRY
test_Reserver (size_t Taille,
unsigned short* NumeroSession);
Tiens, tu as un exemple d'utilisation d'une fonction exportée en recherchant ce sujet
Comment partager le flux de message fenêtre entre le module exe et sa dll MFC régulière
ou celui là
Comment construire une application MFC dont les fonctionnalités sont déplacées vers les dlls MFC de l’application (Inspecta 1)
toutes deux sur cette page là
![]()
Qui a parlé de MFC pour l'instant ?
Le plus simple, c'est de montrer les différents chapitres de la MSDN:
http://msdn.microsoft.com/library/de..._libraries.asp
Les plus importants ici sont les deux premiers. Le troisième, c'est de la culture, et les deux autres, des fonctions avancées.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Partager