2009-06-09 7 views
2

J'ai une DLL C++ qui doit appeler une fonction (passer une valeur, renvoyer une valeur) dans une bibliothèque de classe C#.Quelles sont mes options pour DLL C++ pour appeler une DLL C#?

Est-ce ma seule option pour donner à la DLL C# une interface COM et l'appeler à partir de C++ avec IDispatch?

Est-ce la meilleure méthode?

+0

Est-il possible d'utiliser C++ géré et d'éviter complètement COM? – Stu

+0

Est-ce une application C# ou une application C++? – jjxtra

+0

Vous vous demandez ce que JonSkeet a à dire sur celui-ci ... :-) –

Répondre

5

Couple d'options disponibles pour vous ici

  1. Utilisez un mode mixte assemblage C++/CLI comme un pont entre le C++ et C# DLL
  2. Utilisez le pont COM en exposant plusieurs des principaux types C# comme des objets COM. Cela peut ensuite être accessible via le code C de la sémantique normale COM
0

Une approche qui fonctionnerait serait de l'appeler si COM. Vous pouvez utiliser the Regasm tool pour créer l'encapsuleur COM.

0

Ce n'est pas l'option seulement.

Vous pouvez également compiler votre DLL C++ en tant que DLL managée.

Vous pouvez héberger votre DLL C# en tant que service et à distance.

+0

Noté, j'ai mis à jour ma réponse. – Rob

1

This project exportations dll crée pour les méthodes statiques dans les classes. Vous pouvez ensuite appeler une méthode statique C# à partir du code non managé.

Questions connexes