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

J’ai besoin d’intégrer cette dll C # dans mon code C ++. Je veux appeler des fonctions écrites en C # à partir dll et le rest du code écrit en C ++. Quel est le moyen le plus simple et le plus rapide de le faire? Le programme ne sera exécuté que sous Windows.

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

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

    2.a. hébergez le CLR comme décrit ici: Chargement du Common Language Runtime dans un processus
    2.b. rédigez un morceau de code C ++ géré (une autre DLL – écrite en C ++ / CLI) pour envelopper la DLL .NET et exposer les exportations de la DLL «à l’ancienne» 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. 2.b pourrait donc être la meilleure façon de le faire (pas si facile …). Vous pouvez peut-être utiliser une API REST / Web plus facile.

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