cs_StefB
Messages postés2Date d'inscriptionjeudi 10 avril 2003StatutMembreDernière intervention11 avril 2003
-
11 avril 2003 à 21:35
CoreBreaker
Messages postés540Date d'inscriptiondimanche 23 mars 2003StatutMembreDernière intervention 5 octobre 2007
-
12 avril 2003 à 15:18
Bonjour a tous,
QUESTIONS :
- Comment utiliser les classes, varaibles, constantes et fonctions dans une DLL sous VC++?
- Est-ce t'il existe un tutoriel simple et précis (je ne suis pas expert!!) qui puisse me guider?
- Est-ce que quelqu'un à un exemple de code simple qui montre comment faire?
- Je suis pret à prendre un tut en anglais (ma copine me le traduira si necessaire!)
En effet, je voudrais piloter un appareil. Je ne dispose que de la DLL, du .H mais pas d .LIB .
Cette DLL contient l'ensemble des classes, variables et fonctions qui sont necessaire au pilotage de cet appareil. Je ne dispose d'aucune doc autre que le header (et encore il est en japonnais!!)
Je sais que la question a très certainement été mainte fois aborté, mais je ne trouve pas de solution. On m'a bien filé les MSDNs en me disant que tout était dedans, mais ne parlant que très sommairement anglais, c'est une véritable galère pour trouver ce que je cherche.
Lors de mes recherches, chaque fois que l'on parle d'utiliser les fonctions d'une DLL, il faut disposer du Header, de la DLL et du .LIB (et c'est là que le bas blesse!!)
CoreBreaker
Messages postés540Date d'inscriptiondimanche 23 mars 2003StatutMembreDernière intervention 5 octobre 20071 12 avril 2003 à 15:18
Les constantes n'existe pas dans les DLL.
Pour utilise des variables tu peux passer par des fonctions:
type getVar() et void setVar(type val)
tu peux aussi les exporter:
type __declspec(dllexport) var;
et pour l'importer:
type __declspec(dllimport) var;
pour les fonctions:
type __declspec(dllexport) f(type v);
type __declspec(dllimport) f(type v);
pour les classes:
__declspec(dllexport) class {...};
__declspec(dllimport) class {...};
Si tu n'a pas de .lib il faut utiliser l'API Windows:
pour importer une fonction c'est: GetProcAddress
mais il faut d'abord charget la DLL avec LoadLibrary
Sache que dans les DLL les variables sont partagé ainsi chaque instance qui importe la DLL rique de commetre des effets de bord.
Voici un bout de source que j'ai fait pour quelqu'un:
// k8d.cpp : Defines the entry point for the DLL application.
//
sprintf(message, "La fonction '%s' n'a pas pu être chargée à partir de la DLL", name);
MessageBox(NULL, message, "Fonction non trouvée", MB_ICONERROR);
}