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, ;)
Version imprimable
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 ?
un .dll
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:
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).
oui j'ai un .h pour ça, enfin disons que j'ai un .h dans le code de la DLL qui possède ça :
Citation:
#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).
ça c'est dans ma DLL, mais je ne sais pas quoi faire pour appeler cette fonction dans mon programme de test.Citation:
#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
:arrow: Comment partager le flux de message fenêtre entre le module exe et sa dll MFC régulière
ou celui là
:arrow: 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à
:D
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.