Bonjour,

Je programme uniquement en java mais pour les besoins d'une application je dois programmer un peu de C++ pour utiliser une dll.
Ne connaissant pas vraiment le c++ et ayant passé des bonnes heures sans trouver la solution je fais appel à votre aide.

Voici ci dessous le code qui me pose problème:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
 
 
##########
code C++
##########
 
/*fonction d'une DLL  			_TMC_GetAngle1
//typedef short (WINAPI *DLL_Function_TMC_GetAngle1) ( TMC_ANGLE &Angle, TMC_INCLINE_PRG eMode ); DLL_Function_TMC_GetAngle1 _TMC_GetAngle1;
//_TMC_GetAngle1 = (DLL_Function_TMC_GetAngle1)GetProcAddress(hDLL,"?TMC_GetAngle@@YAFAAUTMC_ANGLE@@W4TMC_INCLINE_PRG@@@Z");
*/
 
 
 
 
TMC_ANGLE Angles;
TMC_INCLINE_PRG eMode = TMC_PLANE_INC;
_TMC_GetAngle1(Angles, eMode);
 
 
TMC_INCLINE Incline = Angles.Incline;
 
double dHz = Angles.dHz;
printf("dHz = %f \n",dHz);//Ca marche je récupère la bonne valeur
 
double test1 = Incline.dCrossIncline;
printf("dCrossIncline_ID = %f %f \n",&Incline.dCrossIncline, test1);
 
 
 
##########
probleme
##########
//Ce qui m'affiche à l'écran 
dHz = 4.596758 
dCrossIncline_ID = 0.000974 0.000000
 
//dHz a la bonne valeur c'est bon
//0.000974 est la bonne valeur, mais je ne récupére que 0.000000 ou alors des valeurs du genre  6016989526623063600000000000000000.000000 
//J'ai fait plein d'essais avec des  .	 -> 	const	 & 	et *	 mais je ne parviens pas à récupérer cette valeur 0.000974 (seul printf me l'affiche correctement)
 
 
 
 
##########
ficher .hpp
##########
 
struct TMC_INCLINE
{
    double dCrossIncline;                 
    double dLengthIncline;               
    double dAccuracyIncline;            
};
 
struct TMC_ANGLE
{
    double dHz;                  
    double dV;                   
    double dAngleAccuracy;       
 
    TMC_INCLINE Incline;          
};
 
enum TMC_INCLINE_PRG
{                            
    TMC_MEA_INC     = 0,     
    TMC_AUTO_INC    = 1,     
    TMC_PLANE_INC   = 2      
};
 
 
RC_TYPE TMC_GetAngle( TMC_ANGLE &Angle,  TMC_INCLINE_PRG eMode = TMC_AUTO_INC );

Merci d'avance pour votre aide.
Si vous pouvez tenter aussi une petite explication par curiosité!!
Je suis vraiment à cours d'idées..

Philippe