Bonjour,
je viens d'essayer de faire ma première dll COM, vu que je croyais commencer a bien cerner le truc.
Donc j'ai une interface basique ITest, dérivée de IUnknown.
Une classe Cobject qui en hérite.
Une classe CMyFactory qui dérive de IClassFactory, avec une fonction CreateInstance qui permet d'obtenir une instance de Cobject.
Une fonction exportée DllGetClassObject qui retourne l'interface demandée, de l'objet demandé.
Dites moi si j'ai bon :p
J'ai ensuite enregistré ma dll en ajoutant une clé dans le registre a HKEY_CLASSES_ROOT\CLSID\{CLSID de mon objet}
dedans une clé InProcServer32 avec la valeur par défault étant le chemin de ma dll.
une valeur ThreadingModel = Both.
Ensuite j'ai fait une simple apply console pour tester le tout, donc :
1 2 3 4 5 6 7 8 9
| ITest * pIT;
CoInitialize(NULL);
HRESULT hr = CoCreateInstance (CLSID_Cclass,
NULL,
CLSCTX_INPROC_SERVER,
IID_ITest,
(void**) &pIT ); |
et comme par hasard,
hr = 0x80040154 Classe non enregistrée -_-"
je suis complétement débutant avec COM donc soyez indulgent :p
(J'ai suivit le tuto trouvé ici
http://www.codeguru.com/cpp/com-tech...icle.php/c5567)
Partager