IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

1er essai COM eet.. ca marche pas :/


Sujet :

C++

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 33
    Points : 23
    Points
    23
    Par défaut 1er essai COM eet.. ca marche pas :/
    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 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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)

  2. #2
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Citation Envoyé par biyoudidou Voir le message
    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 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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)
    Est-ce que tu es sûr que ta classe est bien enregistrée ? Utilise regsrv32 pour le faire - c'est plus sûr.
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 33
    Points : 23
    Points
    23
    Par défaut
    hmmm... non, pas sur qu'elle soit bien enregistrée^^, pour ca que je ne peux pas y accéder je pense. Mais regsvr32.exe ne fais qu'éxécuter DllRegisterServer a ce que j'ai cru comprendre.
    Donc il faut que je l'écrive moi meme, ya pas de raison que ca marche mieu que si je le fais manuellement.

Discussions similaires

  1. port com envoie reception ne marche pas
    Par jeykira dans le forum Réseau
    Réponses: 1
    Dernier message: 14/07/2012, 18h05
  2. [AJAX] Petit essai qui ne marche pas
    Par codeur71 dans le forum AJAX
    Réponses: 9
    Dernier message: 25/02/2012, 11h15
  3. COM : _com_ptr_t ca marche mais je ne comprend pas pourquoi
    Par dockurt2k dans le forum Visual C++
    Réponses: 4
    Dernier message: 21/08/2006, 13h28
  4. 'SHOW TABLES' marche pas sous postgresql !?
    Par fet dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 13/05/2004, 10h28
  5. Sysdate qui marche pas ??
    Par StouffR dans le forum Langage SQL
    Réponses: 4
    Dernier message: 28/08/2002, 14h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo