web-dev-qa-db-fra.com

Utilisation de la DLL C # dans le code C ++

J'ai besoin d'intégrer cela C # dll dans mon code C++. Je veux appeler certaines fonctions écrites en C # à partir de dll et le reste du code écrit en C++. Quelle est la façon la plus simple et la plus rapide de le faire? Le programme sera exécuté uniquement sous Windows.

24
Sunrise

Il existe essentiellement deux cas pour appeler un .NET DLL à partir de code non managé:

  1. Le .NET DLL expose une interface COM. Dans ce cas, vous pouvez utiliser COM à partir de votre code C++.
  2. Le .NET DLL n'expose pas une interface COM. Dans ce cas, vous avez deux possibilités (pour faire simple):

    2.a. Hébergez le CLR comme décrit ici: Chargement du Common Language Runtime dans un processus
    2.b. écrire un morceau de code C++ managé (un autre DLL - écrit en C++/CLI) pour encapsuler le .NET DLL et exposer "à l'ancienne" DLL exporte vers des clients non gérés.

Je ne connais pas spécifiquement le système Sharpbox, mais il semble que ce soit du pur .NET et n'expose pas les interfaces COM, donc 2.b pourrait être la meilleure façon de le faire (pas si facile ...). Peut-être qu'il a une API REST/Web plus simple que vous pourriez utiliser.

PS: vous pouvez également ajouter des exportations à une DLL .NET. Ceci est décrit ici: Est-il possible d'exporter des fonctions à partir d'un C # DLL comme dans VS C++? mais c'est un peu hacky.

25
Simon Mourier