Je sais qu'il est possible de compiler mon code C dans une DLL, puis d'utiliser p / invoke pour appeler ce code.
Ce que je me demandais s'il était possible d'avoir une partie du code C intégré directement dans mon code , peut-être seulement disponible sur une classe ... p>
Quelque chose comme ça (non-travail) Exemple: p>
public class MyClass { extern "C" { int do_something_in_c(int i) { return i*2; } } public int DoSomething(int value) { return do_something_in_c(value); } }
4 Réponses :
Ce n'est pas possible. Tandis que c # prend en charge Code dangereux (pointeurs), Il n'est pas compatible avec C ou C ++ P>
Il est possible de créer un ensemble de mode mixte (c'est-à-dire celui qui a un code géré et natif), mais seul le compilateur C ++ / CLI peut en produire un. Ce que vous cherchez à faire n'est pas pris en charge par le compilateur C #. P>
IMHO, ce n'est pas possible, car c est une langue dangereuse et non gérée. En outre, C # a toutes les caractéristiques importantes de c sauf les pointeurs. P>
C # fait des pointeurs de support - msdn.microsoft.com/ EN-US / Bibliothèque / AA664769 (v = vs.71) .aspx
Mon mauvais .. mais je ne l'ai pas considéré depuis que c'est dangereux.
Vous pouvez écrire et compiler votre code C en tant qu'assemblage normal (non -.net), puis p / l'invoquer:
[DllImport ("mylib.dll")] private static extern int do_something_in_c(int i); public int DoSomething(int value) { return do_something_in_c(value); }
Le PO mentionne cela dans la première ligne de la question.
Oui. Je l'ai fait à l'origine. Mais cela semblait en quelque sorte inélégant. :)