Mastersam
Messages postés116Date d'inscriptiondimanche 26 septembre 2004StatutMembreDernière intervention13 février 2008
-
16 mars 2007 à 12:16
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 2014
-
18 mars 2007 à 12:20
Bonjour, je créé actuellement en driver ASIO sous forme de DLL, j'ai eu un exemple général de création d'un driver dans la SDK ASIO 2.2, mais tout est écrit en c++ et ce n'est pas très clair.
Mon problème actuellement est d'arriver à réécrire la déclaration de l'interface IUnknown dans ma dll, qui sera appelée par le logiciel qui chargera le pilote. Je dois aussi comprendre comment relier les déclaration des fonctions de l'interface aux fonctions que j'ai dans mes autres fichiers .c.
Je voudrais avant tout comprendre ce fonctionnement par interface, car j'étais pour le moment habitué à l'appel de fonction dans une dll par getprocadresse.
cs_juju12
Messages postés966Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 4 mars 20104 17 mars 2007 à 13:40
Je suis pas sûr qu'on puisse traduire ça en C (fonction virtuelle pure...)
Mais pourquoi pas utiliser le C++ ? le COM c'est quand même très orienté objet...
Quant à la définition de IUnknown : dans
Mastersam
Messages postés116Date d'inscriptiondimanche 26 septembre 2004StatutMembreDernière intervention13 février 2008 17 mars 2007 à 15:11
Oui je pense que je vais devoir me diriger vers le C++, d'ailleurs j'ai essayé de recompiler le driver d'exemple avec dev-cpp, mais j'ai un problème d'exportation des fonctions dans la dll. Lorsque je regarde les exports de DllRegister et DllUnregister je trouve :
cs_juju12
Messages postés966Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 4 mars 20104 17 mars 2007 à 17:49
Tes _Zxx ça doit être la décoration des noms de fonction.
Quant à extern "C" {...} c'est pour indiquer (je crois) l'utilisation de la décoration language C.
Vous n’avez pas trouvé la réponse que vous recherchez ?
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 18 mars 2007 à 12:20
Salut,
On peut tout faire avec le C. Il faut juste abandonner toutes les notions de POO et le confort qu'elles apportent.
En C, une interface COM est une structure contenant un pointeur vers une table de pointeurs sur toutes les fonctions (méthodes). Cette table s'appelle la VTable. Il faudra obligatoirement passer par elle pour appeler les fonctions de l'interface incluant celles de IUnknown comme AddRef() Release() etc.
Dans un fichier .h comme unknown.h, on trouve les deux déclarations. Une pour le C++ et l'autre pour le C.
L'avantage de travailler en C, c'est qu'il permet de comprendre comment les choses fonctionnent exactement.
Voici un excellent article sur l'utilisation des objets COM en C:
COM in plain C