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 :

Implémentation d'interface depuis une dll


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 11
    Par défaut Implémentation d'interface depuis une dll
    Bonjour à tous,
    J'utilise une DLL .COM (dans Visual Studio) référencée dans mon projet, je la déclare ainsi que d'autres (que je vous épargne) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ...
    using System.Runtime.InteropServices;
    using DeckLinkAPI;  
    ...
    Quand je créé un objet de la class CDeckLinkIteratorClass tous va bien.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DeckLinkAPI.CDeckLinkIteratorClass _DeviceIteration = new DeckLinkAPI.CDeckLinkIteratorClass();
    Quand je créé un objet de la class IDeckLinkConfiguration :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DeckLinkAPI.IDeckLinkConfiguration _configDecklink =  new DeckLinkAPI.IDeckLinkConfiguration();
    J'obtient une erreur de type :
    Impossible de créer une instance de la classe abstraite ou de l'interface 'DeckLinkAPI.IDeckLinkConfiguration
    Je ne sais pas si je dois mashaler l'interface, ou autres? Quelqu'un aurait une idée ou une piste?

    Dans l'idl j'ai trouver ce commentaire concernant l'interface IDeckLinkConfiguration "Created by QueryInterface from IDeckLink", comment faire une Queryinterface en C#?
    Merci d'avance!
    Nico

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    une classe abstraite c'est une classe qu'on ne peut pas instancier, elle est faite pour etre héritée, et les héritié son en général instanciables
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 11
    Par défaut
    En l'occurence c'est une interface et pas une class abstraite d'après le fichier idl de la dll...
    En gros je croix que je doit faire une QueryInterface mais j'ai rien trouvé sur la question en c#. Quelqu'un aurait un tutoriel, ou une astuce la dessus?
    Encore merci...

  4. #4
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Une interface ne s'instancie pas non plus, on ne peut instancier que des classes concrètes. En l'occurrence tu dois instancier une classe qui implémente l'interface. Par contre tu peux très bien manipuler cette instance via l'interface.

    Tu devrais avoir quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DeckLinkAPI.IDeckLinkConfiguration _configDecklink =  new DeckLinkAPI.MaClasseQuiImplementeIDeckLinkConfiguration();
    Après, ne connaissant pas l'API difficile de pouvoir en dire plus. Mais tu dois avoir une documentation je suppose, donc tu dois pouvoir trouver les classes qui implémentent l'interface et utiliser celle qui te convient dans le cas présent.

    Il y a peut être même une Factory qui se cache quelque part.

  5. #5
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 521
    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 521

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 11
    Par défaut Résolu
    Ok en fait mon problème venait juste d'un cast de nom d'interface. J'ai fini par trouver la solution sur Msdn, tout simplement... merci à tous pour votre aide a+
    Nico

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [DLL] Appel d'une frame depuis une DLL
    Par Rayek dans le forum Langage
    Réponses: 6
    Dernier message: 16/12/2005, 16h32
  2. retrouver l'interface d'une dll quelconque
    Par andrei dans le forum Windows
    Réponses: 21
    Dernier message: 07/11/2005, 02h00
  3. Réponses: 5
    Dernier message: 08/09/2005, 20h33
  4. Comment charger un TFrame depuis une dll ?
    Par Millenod dans le forum Langage
    Réponses: 29
    Dernier message: 22/12/2004, 14h48
  5. [C#] Extraire l'interface d'une dll
    Par Thalion dans le forum Windows Forms
    Réponses: 4
    Dernier message: 07/10/2004, 08h01

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