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 :

Utiliser une classe .net en c++/win32


Sujet :

C#

  1. #1
    Membre confirmé
    Homme Profil pro
    Consultant technique
    Inscrit en
    Juillet 2002
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : Juillet 2002
    Messages : 519
    Points : 523
    Points
    523
    Par défaut Utiliser une classe .net en c++/win32
    Bonjour,

    J'ai fait beaucoup de recherche et je n'arrive pas au résultat que je voudrais.
    Je dois utiliser une classe que j'ai fait en c# dans un programme fait avec C++Builder. C'est donc un programme non managé.

    Je voudrais pouvoir utiliser cette classe normalement comme une autre classe.
    Pour l'instant, j'arrive au code suivant :
    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
    25
    26
    27
    28
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    param.cArgs=0;
    param.rgvarg=NULL;
    param.cNamedArgs=0;
    param.rgdispidNamedArgs=NULL;
    IConnectionPointContainer* pCPC = NULL;
    IConnectionPoint* pCP = NULL;
    if (SUCCEEDED(::CLSIDFromProgID(L"libperso.ClasssePerso", &clsID)))
       {
       if (SUCCEEDED(CoCreateInstance(clsID, NULL, CLSCTX_ALL, IID_IDispatch, (void**)&pDisp)))
          {
          if (SUCCEEDED(pDisp->GetIDsOfNames(IID_NULL, &methodStart,1, GetUserDefaultLCID(), &dispid)))
             {
             if (SUCCEEDED(pDisp->Invoke(dispid, IID_NULL, GetUserDefaultLCID(), DISPATCH_METHOD, &param, &vntResult, NULL, NULL)))
                {
                //bool temp = vntResult.boolVal;
                //pDisp->Release();
                }
             }
          }
       }
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
    {
      CoUninitialize();
    }
    Et j'ai aussi ceci dans le fichier include mais je crois que tout n'est pas utilisé dans le morceau de code du dessus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      DISPID dispid;
      IDispatch *pDisp;
      OLECHAR *methodStart;
      OLECHAR *methodStop;
      CLSID clsID;
      DISPPARAMS param;
      VARIANT vntArgs, vntResult;
    Cela me permet dans d'invoquer les fonctions de la classe même si la fonction demande des paramètres. Mais je ne peux pas manipuler ma classe comme n'importe quel autre objet.

    Et j'ai aussi un problème beaucoup plus grave. Ma classe génère des évènements. Il faut donc que je renseigne quelle est la fonction à appeler. Seulement, je ne sais pas comment le faire depuis mon programme c++.

    J'ai déjà posé quelques questions mais je n'avance pas :
    http://www.developpez.net/forums/d84...dll-perso-net/
    http://www.developpez.net/forums/d89...ser-reference/

    J'ai aussi regardé beaucoup de site internet qui parlent de tout ceci. J'ai regardé les sites qui parlent d'utiliser un delegate c# renseigné par un code non managé mais je bloque toujours.

    La classe c# a déjà tout ce qu'il faut pour rendre disponible ses delegates via des interfaces comme décrit sur les autres sites.

    Pouvez-vous m'aider ?

    Merci d'avance

  2. #2
    Membre confirmé
    Homme Profil pro
    Consultant technique
    Inscrit en
    Juillet 2002
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : Juillet 2002
    Messages : 519
    Points : 523
    Points
    523
    Par défaut
    J'ai trouvé la solution en consultant ce site :
    http://netcode.ru/dotnet/?lang=&katI...248&artID=6521

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

Discussions similaires

  1. Utiliser une classe .net dans C++Builder
    Par gandf dans le forum C++Builder
    Réponses: 0
    Dernier message: 06/04/2010, 23h12
  2. utiliser une classe c# dans un code vb.net?
    Par EternelF dans le forum VB.NET
    Réponses: 5
    Dernier message: 23/04/2009, 17h31
  3. Réponses: 3
    Dernier message: 04/04/2007, 13h17
  4. [VB.NET] utiliser une classe ou non
    Par maxxou dans le forum Windows Forms
    Réponses: 2
    Dernier message: 23/09/2006, 01h09

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