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 :

export objet COM MSXML2 via dll


Sujet :

C#

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 22
    Points : 13
    Points
    13
    Par défaut export objet COM MSXML2 via dll
    Bonjour,
    Nous avons developpé (enfin commencé) une dll C++ permettant d'accéder à une base de données postgres (via libpqxx).
    Cette dll doit permettre de renvoyer un pointeur sur un objet COM (MSXML2::IXMLDOMDocument) permettant ainsi via des prog c++ ou c# de manipuler des données au format XML.
    Cependant le type MSXML2.IXMLDOMDocument est défini comme une interface et donc non instanciable en C#.

    Comment faire pour récuperer cet objet dans un prog c# avec un Pinvoke?

    Voici comment j'ai déclaré le Pinvoque
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    [DllImport("System\\DllMsXml.dll", EntryPoint = "?ACExportMsXml_getXMLDocument@@YAPAUIXMLDOMDocument@MSXML2@@XZ", CharSet = CharSet.Ansi)]
            public static extern MSXML2.IXMLDOMDocument ACExportMsXml_getXMLDocument();
    Comment faire pour appeler la methode ACExportMsXml_getXMLDocument() sachant que je ne peux pas faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    MSXML2.IXMLDOMDocument doc = new MSXML2.IXMLDOMDocument();
    doc = ACExportMsXml.ACExportMsXml_getXMLDocument();
    Merci de votre aide!

    PS:
    Si certains ont deja travaillé sur des méthodes d'export de données xml, je suis preneur...

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Citation Envoyé par ourselin Voir le message
    Cependant le type MSXML2.IXMLDOMDocument est défini comme une interface et donc non instanciable en C#.
    Si ton programme renvoie l'interface, tu n'as pas à l'instancié du coté client, tu as juste a déclarer une variable du type de l'interface, ...

    si tu utilise une DLL en C#, je suppose que cette DLL C++ suit la norme COM et contient une interface pour appeler ses fonctions ?

    Si OUI
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MSXML2.IXMLDOMDocument ObjXML;
    DLLOurselin.ClassTruc ObjOurselin = new DLLOurselin.ClassTrucInvoker(); 
    ObjXML = ObjOurselin.GetXML();

    Si NON
    Tu utilise en c# une DLL non COM, ah, cela m'intéresse pour un projet, je dois fournir une DLL (j'ai fait une DLL Win32 compatible C++\Delphi) mais notre partenaire est .NET, il ne pouvait pas intégré cette DLL à son Référentiel de Classe, je lui ai fait donc un objet COM, mais lol, impossible de partager nos mémoires semble-t-il ...






    EDIT : Ah, tu as complété ton message pendant ma réponse

    le code suivant suffit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MSXML2.IXMLDOMDocument doc;
    doc = ACExportMsXml.ACExportMsXml_getXMLDocument();
    Hum, tu n'aurais pas un exemple avec des passages de paramètres pour ton DLLImport
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

Discussions similaires

  1. Utiliser objet COM Flash dans dll C#
    Par julianito1 dans le forum C#
    Réponses: 6
    Dernier message: 24/05/2011, 09h44
  2. [PHP 5.2] Utilisation d'une DLL sous PHP avec objet COM
    Par Bqda dans le forum Langage
    Réponses: 5
    Dernier message: 08/06/2009, 16h05
  3. Réponses: 2
    Dernier message: 27/01/2009, 22h05
  4. export class via dll probleme ?
    Par cheroua dans le forum C++
    Réponses: 9
    Dernier message: 25/08/2006, 12h28

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