Utiliser une classe C++ en VB.NET

Signaler
Messages postés
10
Date d'inscription
mercredi 3 septembre 2003
Statut
Membre
Dernière intervention
6 mars 2009
-
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
-
Bonjour,

On m'a fourni une classe C++ que je doit appeller dans un programme en VB.NET. J'ai trouvé comment appeller des fonctions C++ en VB.NET mais une classe ! est-ce possible ?
Merci d'avance

2 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
Tu arrrives à compiler du C++ chez VB ???

ciao...
BruNews, MVP VC++
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
13
Salut,

Autant prévenir, toutes mes solutions sont plus ou moins pourris.
La solution 3 est probablement la plus facile, bien que ça dépende de ce que tu dois faire avec ta classe (Une instance où plusieurs instances... Si plusieurs, il faudrat passer par un tableau...). La première est longue et complexe à mettre en oeuvre. La 2, je n'en ai aucune idée.

## Solution 1 :

En C++, on peut faire des classes COM et les stocker dans une dll. Le VB.NET est à peu près compatible avec la techno COM, et peut utiliser les classes COM définies dans une dll, moyennant quelques cliques à droite et à gauche dans Visual Studio.

Par contre, ce n'est pas évident de faire des classes COM en C++ (cf mon lien un peu plus haut pour avoir plus d'infos).

## Solution 2 :

Tu dois aussi pouvoir t'arranger pour faire du C++/CLI, et compiler ta classe dans un assembly .NET. Tu pourras facilement utiliser cette classe dans ton VB.NET. Je n'ai aucune idée de comment s'y prendre et de ce que doit respecter une classe C++ pour être compilable en .NET.

## Solution 3 :

Mettre ta classe dans une dll classique exportant des fonctions C, qui elles même appellent les fonctions C++ (Avantage, pour se la pêter, on peut appeler ça un wrapper). Au final, ça donne ça :
VB.NET <-> C <-> C++

La doc de wikipedia sur les dlls est pas mal. Côté C++, il faut que tu fasse comme dans cette doc :

extern"C" __declspec(dllexport) int toto()
{
   return monInstanceDeClasse.toto();
}

Côté VB.NET, il faut utiliser declare ou dllimport.

Attention à la convention d'appel.