Partage
  • Partager sur Facebook
  • Partager sur Twitter

Est t'il possible d'utiliser une classe C++ avec VB 6

    25 avril 2008 à 19:50:09

    Bonjour,
    Je cherche a savoir si il est possible d'utiliser une classe objet editer en C++ et de la transformer en dll pour ensuite l'utiliser avec VisualBasic ?

    Merci.
    Ps: un oui ou un non avec 2-3 details suffisent car si la reponse est oui, mes questions porteront surtout coté VB.
    • Partager sur Facebook
    • Partager sur Twitter
      25 avril 2008 à 21:05:55

      Directement, ça m'étonnerais beaucoup, mais comme je ne connais pas du tout VB, je ne serai pas catégorique. Cependant tu peux faire une interface sur ta DLL avec des fonctions libres exportées qui vont te réaliser les manipulations de la classe dans la DLL, la classe étant entièrement prise en charge par la DLL. Ce petit exemple devrait te donner l'idée générale, il faudra peut être déclarer les trois fonctions libres en extern "C" pour ne pas avoir de soucis. Ce mécanisme est certes un peu fastidieux, mais je pense qu'il peut fonctionner.

      typedef int ClassHandle; // Un type spécifique pour bien distinguer les handle de classe
      
      class Class
      {
          static int m_baseInstance; // Cette valeur sera incrémenté à chaque création d'un nouvel objet (sauf les copies).
      
          ClassHandle m_Instance; // Le handle de l'instance
      
          int m_Member; // Un attribut quelconque
          
      public:
          Class(int value)m_Member(value)
          {
              // Spécifique Windows, bloque l'accès à m_baseInstance
              // pour tous les thread (sauf le thread courant) pour la durée de l'incrément
              m_Instance = InterlockedIncrement(&m_baseInstance);
          }
      
          int GetMember() const {return m_Member;}
          void SetMember(int value){m_Member = value;}
      
          ClassHandle GetInstance() const {return m_Instance;}
          static std::map<ClassHandle,Class> m_mapInstance;
      }
      
      int Class::m_baseInstance = 0;
      std::map<int,Class> Class::m_mapInstance;
      
      
      ClassHandle DLL_EXPORT CreateClass(int iMember)
      {
         Class temp(iMember);
         Class::m_mapInstance[temp.GetInstance()] = temp;
         return temp.GetInstance();
      }
      
      void DLL_EXPORT ClassSetValue(ClassHandle handle,int value)
      {
         Class::m_mapInstance[handle].SetMember(value);
      }
      
      int DLL_EXPORT ClassGetValue(ClassHandle handle)
      {
         return Class::m_mapInstance[handle].GetMember();
      }
      


      • Partager sur Facebook
      • Partager sur Twitter
      Mettre à jour le MinGW Gcc sur Code::Blocks. Du code qui n'existe pas ne contient pas de bug
        26 avril 2008 à 19:52:28

        JE comprend l'apect generale de ta fonctions; Malheureusement, nombreux sont les aspects que je ne saisi pas du tout dans tout les mecanismes pour creer une id a un objet et avoir ensuite des methodes libres.

        Je vais essayer avec ca, merci de m'avoir donné la piste a suivre.

        • Partager sur Facebook
        • Partager sur Twitter

        Est t'il possible d'utiliser une classe C++ avec VB 6

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown