[Debutant] Erreur LNK2001 sous Visual.Net.
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:
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 :
Code:
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; |
Avec comme nom cavitation.h
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 :
Citation:
Cavitation error LNK2001: unresolved external symbol "class Maillage A" (?A@@3VMaillage@@A)
Et ainsi de suite pour toutes les variables.
J'ai aussi l'erreur suivante :
Citation:
Cavitation error LNK2019: unresolved external symbol "public: __thiscall Maillage::Maillage(void)" (??0Maillage@@QAE@XZ) referenced in function _WinMain@16
et:
Citation:
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"
Code:
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);
}; |
et "Maillage.cpp"
Code:
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 precise que "stdafx.h" regroupe tout les headers ...
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.