[dev-c++] probleme de "multifiles"

Résolu
Isoth0p Messages postés 42 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 15 septembre 2005 - 8 juin 2005 à 15:53
Isoth0p Messages postés 42 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 15 septembre 2005 - 8 juin 2005 à 16:48
Bonjour. Je me trouve face à petit
problème dû, je pense, à la NON-GESTION du "multifiles" par dev-cpp. En
effet, mes 2 fichiers .CPP sont correctement associés au fichier .DEV
et se structures ainsi :



---8<------[ main.cpp ]----

...


class Crosshair

{


...


}


...


void Crosshair::draw( void )

{


...


Draw drawner;

drawer.line( ... );

}


...

---8<------[ main.cpp ]----



L'autre fichier :



---8<------[ draw.cpp ]----

...


class Drawn


{



...



}


...



void line( ...
)


...


---8<------[ draw.cpp ]----



La compilation du projet renvoit cette erreur :


C:\main.cpp | In member function `void Crosshair::draw()': `Draw'

undeclared (first use this function)

(Each undeclared identifier
is reported only once

for each function it appears in.)


C:\main.cpp | expected `;' before "drawer"


C:\main.cpp | `drawer' undeclared (first use this function)





Voila. Si quelqu'un pouvait m'aider... Merci d'avance.

5 réponses

ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
8 juin 2005 à 16:04
il faut déclarer les classes dans des .h et inclures ces .h dans les .cpp

main.h :
class Crosshair
{

...

}

draw.h :
class Draw
{
...

}

main.cpp :
#include "main.h"
#include "draw.h"

void Crosshair::draw( void )
{

...

Draw drawner;
drawer.line( ...
);
}

draw.cpp:
#include "draw.h"

void Draw::line(
...

)
{
}
3
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
8 juin 2005 à 16:44
le point d'entrée pour un prog GUI n'est pas main mais WinMWain :

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow)
3
Pamaury Messages postés 341 Date d'inscription jeudi 3 avril 2003 Statut Membre Dernière intervention 17 juin 2008 3
8 juin 2005 à 16:01
Normal apparemment:



----8<-----[main.h]

#ifndef __MAIN_H__

#define __MAIN_H__



class Crosshair
{
...
}

#endif // __MAIN_H__



----8<----[main.h]



----8<-----[main.cpp]



#include <main.h>



// implémentation des fonction



----8<----[main.cpp]



----8<-----[draw.cpp]




#include <main.h>



// implémentation des fonction



----8<----[draw.cpp]



Là çà devrait marcher parce que dans ton prog le main.cpp ne sait pas que la classe Croshair existe .

peut-être que un

extern class Croshair;

suffirait


A m a u r y
0
Isoth0p Messages postés 42 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 15 septembre 2005
8 juin 2005 à 16:25
Merci à vous 2 et en particuliers à ymca qui m'a permi de régler le problème

Hélàs, un proverbe dit : "Un problème ne vient jamais seul" et en effet, une autre erreur s'est glissée :




[Linker error] undefined reference to `WinMain@16'

ld returned 1 exit status



C:\Makefile.win | [Build Error] [test.exe] Error 1


Je pense qu'il s'agit simplement
d'une option de compilation car j'ai bien inclu windows.h et n'utilise
que SetPixel ! De plus j'ai sélectionner WIN32 GUI dans le type de
projet ...



SetPixel( NULL, x, y, RGB( 0xff, 0x00, 0xff ) );


Voici le log de compilation :



Compilateur: Default compiler

Building Makefile: "C:\Makefile.win"

Exécution de make...

make.exe -f "C:\Makefile.win" all

g++.exe -c main.cpp -o main.o
-I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include"
-I"C:/Dev-Cpp/include/c++/3.4.2/backward"
-I"C:/Dev-Cpp/include/c++/3.4.2/mingw32"
-I"C:/Dev-Cpp/include/c++/3.4.2"
-I"C:/Dev-Cpp/include"



g++.exe -c draw.cpp -o draw.o
-I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include"
-I"C:/Dev-Cpp/include/c++/3.4.2/backward"
-I"C:/Dev-Cpp/include/c++/3.4.2/mingw32"
-I"C:/Dev-Cpp/include/c++/3.4.2"
-I"C:/Dev-Cpp/include"



g++.exe main.o draw.o -o "test.exe" -L"C:/Dev-Cpp/lib" -mwindows



C:/Dev-Cpp/lib/libmingw32.a(main.o)(.text+0x106):main.c: undefined reference to `WinMain@16'

collect2: ld returned 1 exit status



make.exe: *** [test.exe] Error 1



Exécution terminée



Encore merci et espérant toujours votre aide
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Isoth0p Messages postés 42 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 15 septembre 2005
8 juin 2005 à 16:48
J'ai honte ... J'avais carrément oublié de mettre un main (et encore plus un WinMain). Merci !
0
Rejoignez-nous