Bonjour, je crée en ce moment une DLL regroupant des fonctions mathématiques et lorsque je test ma DLL sur un programme en C (mode console sous DEV-CPP), le résultat des calculs est faux !

Fichier .c du programme "test" :
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
#include <stdio.h>
#include <stdlib.h>
#include "samsoft_maths.h"
 
int main()
{
    double x; //nombre//
    double r; //resultat//
 
            printf("\nTapez votre nombre : ");
            fflush(stdout); 
            scanf("%ld", &x);
            r = ss_carre(x);//Appel de la fonction ss_carre
            printf("%d au carre vaut %d\n", x, r);
	system("PAUSE");
	return EXIT_SUCCESS;
}
fichier .c de la DLL :

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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
/*
Fichier : samsoft_maths.c
Auteur : Samy Hocine (SamSoft) http://www.samsoft.ift.fr ; samyhocine@hotmail.fr
Date du commencement: Mercredi 4 fervrier 2007
Description : Dll incluant divers fonctions mathématiques
Licence : GNU/GPL
Information : ss ou SS veut dire SamSoft
*/
 
#include "samsoft_maths.h"
 
const double PI = 3.1415926535897932384626433832795;
 
double SAMSOFT_MATHSDLL_API ss_carre(double a)
{
    return a*a;
}
 
double SAMSOFT_MATHSDLL_API ss_cube(double a)
{
    return a*a*a;
}
 
double SAMSOFT_MATHSDLL_API ss_perimetre_cercle(double r)
{
    return 2*PI*r;
}
 
double SAMSOFT_MATHSDLL_API ss_aire_cercle(double r) //r = rayon//
{
    return PI*r*r;
}
 
double SAMSOFT_MATHSDLL_API ss_aire_triangle(double b, double h) //triangle quelconque, b = base et h = hauteur//
{
    return (b*h)/2;
}
 
double SAMSOFT_MATHSDLL_API ss_aire_triangle_equi(double a) //triangle équilateral, a est la longeur d'un côté//
{
 
    int increment;
    double resultat;
    double an;
    double an1;
 
    if (a >= 0)
    {
        an=a;
        for (increment=0;increment<8;increment++)
        an1=(an+(a)/an)/2;
        an==an1;
        resultat==an1;
        return resultat;
    }
    else if (a < 0)
    {
        return -0.00000;
    }
}
 
double SAMSOFT_MATHSDLL_API ss_aire_triangle_rect(double b, double c) //triangle rectangle, b et c sont les longeurs de deux côtés autres que l'hypothénuse//
{
    return (b*c)/2;
}
 
double SAMSOFT_MATHSDLL_API ss_aire_rectangle(double l, double m)//l = longeur ; m = largeur/
{
    return l*m;
}
 
double SAMSOFT_MATHSDLL_API ss_aire_carre(double a)//a étant la longeur d'un côté//
{
    return a*a;
}
 
double SAMSOFT_MATHSDLL_API ss_aire_parallelogramme(double b, double h)//b étant la base et h la hauteur//
{
    return b*h;
}
 
double SAMSOFT_MATHSDLL_API ss_aire_losange(double b, double h)//b étant la base et h la hauteur//
{
    return (b*h)/2;
}
 
double SAMSOFT_MATHSDLL_API ss_aire_trapeze(double a, double b, double h)//b étant la base et h la hauteur et a la longeur du côté du dessus//
{
    return 1/2*(a+b)*h;
}
 
double SAMSOFT_MATHSDLL_API ss_volume_sphere(double r)//r étant le rayon de la sphère//
{
    return 4*PI*r*r;
}
 
double SAMSOFT_MATHSDLL_API ss_volume_pyramide(double b, double h)//b est la base d'aire et h la hauteur//
{
    return 1/3*b*h;
}
 
double SAMSOFT_MATHSDLL_API ss_volume_tetraedre(double b, double h)//b est la base d'aire et h la hauteur//
{
    return 1/3*b*h;
}
 
double SAMSOFT_MATHSDLL_API ss_volume_cone_revolution(double r, double h)//r est le rayon de la base qui est un cercle et h la hauteur//
{
    return 1/3*PI*r*r*h;
}
 
double SAMSOFT_MATHSDLL_API ss_aire_pave_droit(double a, double b, double c)//a, b et c sont des longeurs//
{
    return 2*(a*b+b*c+a*c);
}
 
double SAMSOFT_MATHSDLL_API ss_volume_pave_droit(double a, double b, double c)//a, b et c sont des longeurs//
{
    return (a*b*c);
}
 
double SAMSOFT_MATHSDLL_API ss_aire_cube(double a)//a étant la longeur d'un côté//
{
    return 6*a*a;
}
 
double SAMSOFT_MATHSDLL_API ss_volume_cube(double a)//a étant la longeur d'un côté//
{
    return a*a*a;
}
 
double SAMSOFT_MATHSDLL_API ss_volume_cyclindre_revolution(double r, double h)//r est le rayon de la base (qui est un cercle) et h la hauteur entre la base et la surface du dessus//
{
    return PI*r*r*h;
}
 
double SAMSOFT_MATHSDLL_API ss_addition(double a, double b)
{
    return a+b;
}
 
double SAMSOFT_MATHSDLL_API ss_soustraction(double a, double b)
{
    return a-b;
}
 
double SAMSOFT_MATHSDLL_API ss_multiplication(double a, double b)
{
    return a*b;
}
 
double SAMSOFT_MATHSDLL_API ss_division(double a, double b)
{
    return a/b;
}
 
double SAMSOFT_MATHSDLL_API ss_cal_a_b_fct_lineaire(double x, double fx, double y1, double y2, double x1, double x2)
{
    //fonction permettant de trouver a et b d'une fonction linéaire de manière algébrique//
    //fonction exemple : f(x) = ax + b
    double a;
    double b;
    char r; //resultat//
 
    a = (y1 - y2)/(x1 - x2);
    b = fx - a*x;
    r = ("f(x) = %d%d + %d", a, x ,b);
    return r;
}
fichier .h (à inclure dans la DLL et dans le programme) :
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
/*
Fichier : samsoft_maths.h
Auteur : Samy Hocine (SamSoft) http://www.samsoft.ift.fr ; samyhocine@hotmail.fr
Date du commencement: Mercredi 4 fervrier 2007
Description : None
Licence : GNU/GPL
Information : ss ou SS veut dire SamSoft
*/
 
#ifndef H_TC_SAMSOFT_MATHSDLL_20070214181222
#define H_TC_SAMSOFT_MATHSDLL_20070214181222
 
#ifdef SAMSOFT_MATHSDLL_BUILD
#define SAMSOFT_MATHSDLL_API __declspec(dllexport)
#else
#define SAMSOFT_MATHSDLL_API __declspec(dllimport)
#endif
 
extern const double PI;
 
double SAMSOFT_MATHSDLL_API ss_carre(double a);
double SAMSOFT_MATHSDLL_API ss_cube(double a);
double SAMSOFT_MATHSDLL_API ss_perimetre_cercle(double r);
double SAMSOFT_MATHSDLL_API ss_aire_cercle(double r);
double SAMSOFT_MATHSDLL_API ss_aire_triangle(double b, double h);
double SAMSOFT_MATHSDLL_API ss_aire_triangle_equi(double a);
double SAMSOFT_MATHSDLL_API ss_aire_triangle_rect(double b, double c);
double SAMSOFT_MATHSDLL_API ss_aire_rectangle(double l, double m);
double SAMSOFT_MATHSDLL_API ss_aire_carre(double a);
double SAMSOFT_MATHSDLL_API ss_aire_parallelogramme(double b, double h);
double SAMSOFT_MATHSDLL_API ss_aire_losange(double b, double h);
double SAMSOFT_MATHSDLL_API ss_aire_trapeze(double a, double b, double h);
double SAMSOFT_MATHSDLL_API ss_volume_sphere(double r);
double SAMSOFT_MATHSDLL_API ss_volume_pyramide(double b, double h);
double SAMSOFT_MATHSDLL_API ss_volume_tetraedre(double b, double h);
double SAMSOFT_MATHSDLL_API ss_volume_cone_revolution(double r, double h);
double SAMSOFT_MATHSDLL_API ss_aire_pave_droit(double a, double b, double c);
double SAMSOFT_MATHSDLL_API ss_volume_pave_droit(double a, double b, double c);
double SAMSOFT_MATHSDLL_API ss_aire_cube(double a);
double SAMSOFT_MATHSDLL_API ss_volume_cube(double a);
double SAMSOFT_MATHSDLL_API ss_volume_cyclindre_revolution(double r, double h);
double SAMSOFT_MATHSDLL_API ss_addition(double a, double b);
double SAMSOFT_MATHSDLL_API ss_soustraction(double a, double b);
double SAMSOFT_MATHSDLL_API ss_multiplication(double a, double b);
double SAMSOFT_MATHSDLL_API ss_division(double a, double b);
double SAMSOFT_MATHSDLL_API ss_cal_a_b_fct_lineaire(double x, double fx, double y1, double y2, double x1, double x2);
 
#endif
Donc quand je tape un chiffre par exemple (pour la fonction ss_carre),

il sort : "5 au carré vaut 2" alors qu'il devrait sortir "5 au carré vaut 25"

Quelle est la solution à mon problème ?

merci,