neophenix83
Messages postés63Date d'inscriptionsamedi 9 avril 2005StatutMembreDernière intervention 4 mai 2007
-
20 mars 2006 à 13:44
Guillemouze
Messages postés991Date d'inscriptionsamedi 25 octobre 2003StatutMembreDernière intervention29 août 2013
-
21 mars 2006 à 13:42
Bonjour,
Je tente de compiler les sources d'un projet que j'ai récupéré, mais je me trouve face à un pb.
Je veux compiler sous VC8, et lors de la compilation, il me dit
fatal error LNK1104:
Car il ne trouve pas un certain fichier test.obj
Qu'est ce que ce fichier .OBJ ?! car je n'ai aucun fichier portant ce type d'extension...
D'ou vient il? que veux t il ?
Guillemouze
Messages postés991Date d'inscriptionsamedi 25 octobre 2003StatutMembreDernière intervention29 août 20136 21 mars 2006 à 13:42
tu utilise quoi pour compiler? visual studio (je suppose vu qu'il cree des .obj) , ... ?
en general, les fichiers que tu met dans un dossier include devraient etre que des .h
pour que la compilation marche bien. il faut que tu specifie qu'il faut aussi rechercher les fichier objets dans ton dossier, et que tu compile ton test1.c en test1.obj.
je connais pas trop visual studio, mais ta compilation devrait se derouler comme ca ($CC est ton compilateur: gcc, ...) :
$CC -c projet/include/test/test1.c -o projet/include/test/test1.obj
$CC -c test2.c -o test2.obj
...
$CC -o tonproj.exe test2.obj projet/include/test/test1.obj ...
Guillemouze
Messages postés991Date d'inscriptionsamedi 25 octobre 2003StatutMembreDernière intervention29 août 20136 20 mars 2006 à 13:53
le fichier test.obj est un fichier C/C++ compilé.
La compilation se deroule en 2 etapes.
1 - compilation des sources une par une
2 - edition des liens
par example, si tu as 2 fichiers source test1.cpp et test2.cpp ( et eventuellement test1.h / test2.h)
alors le compilateur compilera tout d'abord test1.cpp en test1.obj et test2.cpp en test2.obj, puis linkera test1.obj et test2.obj en xxxx.exe
imaginons que dans ton fichier test2 tu ai une fonction fct(int x), et que dans test1 tu fasse appel à cette fonction (donc dans test1 tu aura "#include test2.h"), alors a la compilation des fichiers, il verifiera que ta fonction existe bien, et au linkage, il 'recopiera' cette fonction dans test1 (en gros).
donc test.obj doit etre le fichier test.cpp compilé.
P.S.: les fichier .h qui n'ont pas de .cpp sont juste linkés, pas compilés
neophenix83
Messages postés63Date d'inscriptionsamedi 9 avril 2005StatutMembreDernière intervention 4 mai 2007 20 mars 2006 à 13:58
Merci pour tes explications fort claires.
Donc, si j'ai bien tout compris, si il ne trouve pas mon fichier test.obj, ca signifie que le test.c ne s'est pas compilé de facon correcte ?!
Mais dans ce cas, comment puis je savoir ou ca a cafouillé dans la compilation si la seule erreur que j'ai est cette erreur de link qui me dit qu'il ne trouve pas le fichier test.obj ?!
neophenix83
Messages postés63Date d'inscriptionsamedi 9 avril 2005StatutMembreDernière intervention 4 mai 2007 20 mars 2006 à 14:51
Bon, en fait, il y a encore un autre leger soucis.....et c'est de là que viennent mes gros embettement.
En fait, je souhaite qu'il cree le .obj, alors je fais compiler le fichier test1.c qui se trouve normalement dans un repertoire projet/include/test/test1.c
mais quand je le compile, il me crée en réalité un include.obj dans le repertoire projet .
Je ne comprend vraiment pas. Je pensais que lorsque je compile test1.c, il me créait test1.obj dans le meme repertoire...
Y a t il des options à changer ?!