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. :)