LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 2013
-
15 mars 2012 à 11:11
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 2013
-
21 mars 2012 à 10:58
Bonjour,
J'ai l'intention de refaire un ancien programme C++ en C#
(je débute en C#)
Or, avant de me lancer dans la bataille, je voudrais m'assurer de la faisabilité de la chose: en effet, dans mon programme C++ j'utilise des DLL
développées aussi en C/C++.
En cherchant un peu sur le net j'ai trouvé l'utilisation de P/Invoke (DllImport etc...)
Je n'utilise qu'une seule fonction de la dll à importée or celle-ci prends beaucoup de paramètres et c'est là que j'ai peur que ça coince, voici la fonction en question:
int solve(
int LOG,
double TIME,
int T_PRE,
int T_MEAN,
int N_BUR,
int N_ALT,
int N_SYN,
double ALPHA,
int N_MAX_BLOCKS,
double W_SP_TOT,
double W_SP_ZON,
double W_PO_TOT,
double W_PO_ZON,
double W_CP,
int *BUR_ZO,
double *BUR_PO,
int *BUR_DC,
int *BUR_UP,
int *BUR_DO,
int **ALT_CP,
int **SYN_CP,
int **BUR_SD,
double *TOT_PO,
int *T_NEXT
);
Y a t'il des gens expérimentés pouvant m'aider et me renseigner sur la faisabilité de porter mon code en C# ?
merci d'avance.
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 16 mars 2012 à 10:28
Ok, merci.
Effectivement en cherchant plus hier je me suis rendu compte qu'il y avait des moyens de faire avec du code unsafe ou autre...
Je recherche le meilleur moyen, et justement j'ai bien identifié que la correspondance des types poserait surement problème, ce qui me fait le plus peur bien entendu sont les pointeurs de pointeurs d'entier.
Débutant en C#, je ne sais pas comment faire et je n'ai rien trouvé sur "google"
saurais tu m'aider via un exemple concret , STP?
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 21 mars 2012 à 03:14
Salut,
En unsafe tu peux utiliser des pointeurs et des pointeurs sur pointeur.
Il est possible de prendre l'adresse d'un tableau ou d'un élément d'un tableau là ou il faut bien faire attention c'est que le garbage collector déplace les objets, il existe le mot clé "fixed" qui dit au compilo "ne bouge pas le tableau j'utilise son adresse."
Le mot clé "stackalloc" alloue de la mémoire fixe sur la pile (pour les petits tableaux bien sûr).
La classe Marshal possède des méthodes pour allouer de la mémoire dans le tas non managé, donc de la mémoire qui ne sera pas déplacée par le garbage collector.