Appelez le code managé .NET à partir du code C natif

Je dois pouvoir appeler le code managé .NET 3.5 dans une DLL à partir de la version native C. Je n’ai pas reçu de fichiers .h ou .lib.
J’ai essayé de créer une DLL C ++ pour exposer une interface compatible C, mais je ne semble pas pouvoir inclure les DLL à utiliser dans mon projet.

Est-il possible d’appeler du code géré par .NET à partir du code C natif?

Le code géré pur ne vous fournira jamais un en-tête ou une bibliothèque – il s’appuie plutôt sur les capacités de métadonnées du framework .NET pour que le compilateur détermine l’API appropriée.

La manière la plus simple d’utiliser un assembly géré à partir de C consiste à utiliser C ++ / CLI pour créer un wrapper natif autour du code managé. Vous pouvez ensuite exposer une API C à partir de cette DLL et y accéder comme n’importe quelle autre DLL C / C ++.

Vous devriez jeter un oeil aux exportations non gérées , que vous pouvez obtenir sous forme de paquet NuGet . Voici la description selon l’auteur:

Un ensemble de bibliothèques à la compilation (rien à déployer) et une tâche de génération qui vous permet d’exporter des fonctions du code managé vers des applications natives. Cela signifie que vous pouvez créer des plugins dans un langage géré comme C # ou F # pour les applications natives qui ne possèdent qu’un C-Api (comme Notepad ++). Le package nuget est tout ce dont vous avez besoin. Marquez simplement vos méthodes avec [DllExport] et comstackz pour x86, x64 ou ia64.