ici est une solution. La solution permet d'appeler une fonction C# de C en décorant votre fonction avec l'attribut [DllExport] (opposé de P/Invoke DllImport).
https://sites.google.com/site/robertgiesecke/Home/uploads/unmanagedexports
C# Code
class Test
{
[DllExport("add", CallingConvention = CallingConvention.StdCall)]
public static int Add(int left, int right)
{
return left + right;
}
}
code C
int main()
{
int z = add(5,10);
printf("The solution is found!!! Z is %i",z);
return 0;
}
Comme @ iceflow19 commenté ci-dessous:
L'auteur du lien fournit un CLR IL préprocesseur comme un s ajouté tep pendant la compilation. Comme les assemblys utilisent le même format de conteneur binaire (DLL) sur Windows, si vous ajoutez manuellement les offsets de fonctions .Net dans IL à vtable (la liste des exportations de dll), Windows est assez intelligent pour appeler le CLR pour exécuter ce code lorsqu'il est appelé de C. Cependant, il y a des frais généraux. C'est une fonctionnalité non annoncée. C'est ainsi que fonctionnent les bibliothèques gérées mixtes en C++/CLI. Pour l'utiliser il suffit de l'ajouter à travers Nuget. La cible supplémentaire ajoutée dans votre fichier de projet MSBuild fournira l'étape de prétraitement IL
Merci pour l'aide, je vais les regarder en détail et poster ma réponse – sveerap
Merci, j'ai essayé le COM interop et je pourrais faire une sorte d'application hello world. – sveerap
Les liens pour les API One Code et CLR Hosting sont rompus. Pouvez-vous fournir une mise à jour (je n'ai pas pu trouver les liens corrects) –