Bonjour,
Voila mon problème: Je fais une application Win32, un petit programme assez simple avec l'interface basique de Visual.
Donc dans le premier fichier nommé cavitation.cpp
(...)
(...)
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 int APIENTRY _tWinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPTSTR lpCmdLine,int nCmdShow) { // TODO: Place code here. MSG msg; HACCEL hAccelTable; // Initialize global strings Maillage A; double Centrage = 0.5; double a1 = 0.; double b1 = 0.; double c1 = 1.; double a2 = 0.; double b2 = 0.; double c2 = 1.; int Nx = 100; int Ny = 100; double Lamont = 1.; double Laval = 1.; double Ltuyere = 1.; LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); LoadString(hInstance, IDC_CAVITATION, szWindowClass, MAX_LOADSTRING);
Donc ici j'initialise des variables que je veux globales i.e. que j'utilise dans d'autres .cpp de mon programme.
J'associe a ce .cpp le header suivant :
Avec comme nom cavitation.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 #pragma once extern int Nx,Ny; extern double a1,b1,c1; extern double a2,b2,c2,Centrage; extern double Lamont,Laval,Ltuyere; extern Maillage A;
La commande "extern" est celle que j'ai lue dans quelques forum pour déclarer les variables globales.
Bon lors de la compilation j'obtient les messages suivant :
Et ainsi de suite pour toutes les variables.Cavitation error LNK2001: unresolved external symbol "class Maillage A" (?A@@3VMaillage@@A)
J'ai aussi l'erreur suivante :
et:Cavitation error LNK2019: unresolved external symbol "public: __thiscall Maillage::Maillage(void)" (??0Maillage@@QAE@XZ) referenced in function _WinMain@16
Cavitation error LNK2019: unresolved external symbol "public: virtual __thiscall Maillage::~Maillage(void)" (??1Maillage@@UAE@XZ) referenced in function _WinMain@16
J'espere ne pas alourdir en ajoutant ma definition de la classe maillage :
"Maillage.h"
et "Maillage.cpp"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 #pragma once class Maillage { public: Maillage(void); virtual ~Maillage(void); public: double **PointMaillage; void CreationPoint(int , int); void Dessin(); void Zone1(int,int); void InitParam(int, int); };
Je precise que "stdafx.h" regroupe tout les headers ...
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 #pragma once #include "stdafx.h" void Maillage::InitParam(int A,int B) { int i; int X,Y; X = 3*A; Y = 3*B; PointMaillage = new double *[X]; for (i=0;i<X;i++) { PointMaillage[i] = new double [Y]; } }; void Maillage::Zone1(int X, int Y) { int i,j; for (i=0;i<X;i++) { for (j=0;j<Y;j++) { PointMaillage[i][j]=1; } } }; void Maillage::CreationPoint(int A, int B) { }; void Maillage::Dessin() { };
Je suis debutant alors je vous demanderais un peu de compassion. J'espere ne pas rompre une des lois du forums en postant comme je l'ai fait.
Merci de votre compréhension.
PS: une reponse en langage simple serait appréciable.
Partager