Bonjour � tous,
Je vais essayer d'�tre le plus clair possible.
J'ai �cris une DLL native qui contient 1 m�thode effectuant tout un tas de calcul. jusque la tout va bien.
Notez les 2 r�f�rences que je souhaite r�cup�rer en C# !
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2 double SpectralPropertySoil(double slope, double snow,double snowage, double IN_thetas, double thetassat, double &OUT_reflvs, double &OUT_reflns,double ksnow, double reflvsground, double reflvssnowfresh, double reflvssnowold,double reflnsdry, double reflnsmoist, double reflnssnowfresh, double reflnssnowold) { some calculations...}
J'ai donc rajout� un projet C++/CLI dans lequel je r�f�rence cette DLL native et je "wrapp" cette fonction dans une public ref class comme ceci :
Le fichier.h:
Le fichier.cpp:
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2 double SpectralPropertySoilWrapped( double slope, double snow,double snowage, double IN_thetas, double thetassat, double %OUT_reflvs, double %OUT_reflns,double ksnow, double reflvsground, double reflvssnowfresh, double reflvssnowold,double reflnsdry, double reflnsmoist, double reflnssnowfresh, double reflnssnowold);
A ce niveau j'ai une erreur qui me dit : the % operator can be used only on an object with a managed class type.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6 double CompleteWrapper::SpectralPropertySoilWrapped( double slope, double snow, double snowage, double IN_thetas, double thetassat, double %OUT_reflvs, double %OUT_reflns, double ksnow, double reflvsground, double reflvssnowfresh, double reflvssnowold, double reflnsdry, double reflnsmoist, double reflnssnowfresh, double reflnssnowold) { return PasimWrapper::SpectralPropertySoil(slope, snow, snowage, IN_thetas, thetassat, OUT_reflvs,OUT_reflns, ksnow, reflvsground, reflvssnowfresh, reflvssnowold, reflnsdry, reflnsmoist, reflnssnowfresh, reflnssnowold);
et enfin mon projet C# qui utilise cette DLL. Le tout fonctionne � peu pr�s bien car je n'arrive pas � r�cup�rer les 2 valeurs r�f�renc�es en natif (&). J'ai essay� des choses avec des pointeurs, des tracking reference, etc...mais je crois que j'ai besoin d'un oeil ext�rieur maintenant. Les valeurs sont conserv�es jusqu'� la couche C++/CLI et au moment ou le programme retourne dans le C# les r�f�rences sont perdues.
Auriez vous une piste ? une indication ? ou peut �tre je fais mal les choses avec mon code ?
Dites moi car la je dois dire que je suis � cours d'id�es.
Merci !
@pluche
Partager