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 :

[COM] IRecordInfo non trouvé


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2013
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 93
    Par défaut [COM] IRecordInfo non trouvé
    Bonjour,

    Je fait une dll C++ dans laquelle je définis des structures (UDT) et je veux créer un tableaux de cette structure.
    Pour cela je vais utiliser les SAFEARRAY et une fois que j'aurais récupérer le IRecordInfo de ma structure je pense que ça sera facile.

    Mon problème est que je n'arrive pas à récupérer mon IRecordInfo alors que je vois bien ma structure dans le fichier .tlb associé à mon projet.

    Voilà mon fichier .idl:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    #define _BIND_TO_CURRENT_VCLIBS_VERSION 1
    import "oaidl.idl";
    import "ocidl.idl";
     
    [
    	uuid(703E4E1C-464D-4b4b-AB9E-0F564E6B2AF9),
    	version(1.0)
    ]
     
     
    library MyLIB
    {      
    	typedef [uuid(8B892E66-7DAA-414C-B782-1642D9E27A22)] struct Data
    	{
    		int n;
    		SAFEARRAY(double) x;
    	} Data;
    }
    Mon fichier .h:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
            const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
     
    EXTERN_C const IID LIBID_MyLIB;
     
    typedef /* [uuid] */  DECLSPEC_UUID("8B892E66-7DAA-414C-B782-1642D9E27A22") struct Data
        {
        int n;
        SAFEARRAY * x;
        } 	Data;
    Mon fichier .cpp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    DEFINE_GUID(LIBID_MyLIB, 0x703E4E1C, 0x464D, 0x4b4b, 0xAB, 0x9E, 0x0F, 0x56, 0x4E, 0x6B, 0x2A, 0xF9);
    MIDL_DEFINE_GUID(IID, LIBID_MyLIB, 0x703E4E1C, 0x464D, 0x4b4b, 0xAB, 0x9E, 0x0F, 0x56, 0x4E, 0x6B, 0x2A, 0xF9);
     
     
    double __stdcall  Test()
    {
    	IRecordInfo* pRecInfo = NULL;
    	LPTYPELIB pTypelib = NULL;
    	HRESULT hr;
     
    	hr = LoadRegTypeLib(LIBID_MyLIB, 9, 9, GetUserDefaultLCID(), &pTypelib);
     
    	if (pTypelib) 
    	{
    		ITypeInfo *pTypeInfo = NULL;
    		hr = pTypelib->GetTypeInfoOfGuid(IID_ST_TestResult, &pTypeInfo);
    		if (pTypeInfo) 
    			return 2;
     
    		return 1;
    	}
     
    	return 0;
    }
    Le code est un extrait de mon projet.
    Je ne souhaite pas inclure le fichier généré _h.h et c'est pour cela que je cherche à utiliser une manière détourné de faire mon affaire.

    Ma fonction me retourne 1 et je n'arrive pas à comprendre pourquoi ma structure n'est pas trouvée.

    Auriez-vous des pistes ou des explications s'il vous plaît?

    Merci

  2. #2
    Expert confirmé

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 034
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 034
    Billets dans le blog
    12
    Par défaut
    Salut!

    Pourquoi ne souhaites-tu pas inclure le _h.h généré?
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 516
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 516
    Par défaut
    Citation Envoyé par dragonjoker59 Voir le message
    Pourquoi ne souhaites-tu pas inclure le _h.h généré?
    Parce que lui vérifierait la valeur de retour de l'appel à la méthode "GetTypeInfoOfGuid" ligne 16.

  4. #4
    Expert confirmé

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 034
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 034
    Billets dans le blog
    12
    Par défaut
    C'est vrai que c'est malin de stocker le HRESULT ... Et de ne rien en faire...
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2013
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 93
    Par défaut
    En effet je ne fait rien sur HRESULT car comme le nom l'indique c'est une fonction test qui ne fait rien de bien si ce n'est tester et grâce au debug, on peux avoir sa valeur en temps réel...
    Et pour info, le _h.h ne teste rien, c'est juste un ensemble de déclaration.

    Pour revenir à des choses plus intéressantes, je ne veux pas me servir du _h.h car j'utilise un projet avec une architecture déjà douteuse mais compatible XCode et lorsque je veux l'intégrer à mon projet c'est un sacré bazar!
    Puis je préfère écrire une 20aine de ligne en plus qui correspond a mon plus strict besoin plutôt que de tout amener.

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    S'il te manque juste la définition de IRecordInfo, pourquoi ne pas simplement inclure oaidl.h?
    Edit: Je suis un idiot.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. Objets COM non trouvés
    Par coco dans le forum Windows Vista
    Réponses: 2
    Dernier message: 07/03/2007, 12h17
  2. [VB.NET 2.0/Excel] composant COM non trouvé
    Par m-mas dans le forum VB.NET
    Réponses: 6
    Dernier message: 28/06/2006, 17h25
  3. [debutant][Classpath][Linux] Classe non trouvée
    Par oghma777 dans le forum Général Java
    Réponses: 5
    Dernier message: 15/10/2004, 21h26
  4. COleDispatchDriver et Afx.h -> LPCSTR non trouvé
    Par Bayard dans le forum C++Builder
    Réponses: 2
    Dernier message: 25/09/2004, 08h42
  5. [Debutant][Install][VS]erreur sur fichier non trouvé.
    Par silvermoon dans le forum DirectX
    Réponses: 4
    Dernier message: 16/07/2004, 20h59

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