2010-02-11 3 views
1

Imaginez un projet avec un composant C# et un composant C++. Le composant C++ est le composant old-school non .Net (VC++ 6.0). Quel est un moyen facile de transférer des objets entre les deux composants? Je suis tenté d'utiliser System.Xml.XmlSerializer, mais je ne suis pas sûr de savoir comment commencer à utiliser les bibliothèques .Net avec cette ancienne application VC++.Échange d'objets entre C# et C++

Peut-être qu'il y a un moyen encore plus simple que je n'ai pas envisagé. Aucune suggestion?

Répondre

4

Que pensez-vous de l'utilisation de COM? Les applications .NET peuvent consommer des objets COM et s'exposer en tant qu'objets COM.

+0

COM est incroyablement complexe et incroyablement lent. À moins que le projet C++ original n'expose déjà une interface COM, l'utilisation de C++/CLI comme lien entre les assemblages C++ et .NET natifs constitue une meilleure alternative. – pyon

+0

@Eduardo: "COM est incroyablement complexe" n'est pas une remarque utile. Est-ce que le PO devrait utiliser toute la complexité, une partie ou plus probablement presque rien de tout cela? –

+0

@John Saunders: Tout sous-ensemble non trivial de COM est incroyablement complexe. Même les sous-ensembles triviaux sont. – pyon

2

Faire du C++ un objet COM?

5

Jetez un oeil à C++/CLI. Vous pouvez écrire un wrapper avec celui-ci qui traduit entre les deux mondes.

+0

Beaucoup mieux alors en utilisant COM, à mon humble avis. – gimpf

+0

@gimpf, secondé. COM est simplement nul. – pyon

0

Si votre composant C++ est une DLL non managée, l'exportation de fonctions de style C "Platform Invoke" est une autre option. Cette technique permet l'accès à partir du code managé .NET (C#) au code C++ non géré, mais pas dans l'autre sens.

0

En fonction de la taille de votre projet, je recompilerais le contenu de VC6 en C++/CLI avec VS 2008. Ensuite, vous pouvez accéder directement au contenu .net.

Questions connexes