Link

[Résolu]
Signaler
Messages postés
63
Date d'inscription
samedi 9 avril 2005
Statut
Membre
Dernière intervention
4 mai 2007
-
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
-
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 ?

Je sais, je débute un peu sous VC

D'avance, merci.

4 réponses

Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
7
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 ...
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
7
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
Messages postés
63
Date d'inscription
samedi 9 avril 2005
Statut
Membre
Dernière intervention
4 mai 2007

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 ?!
Messages postés
63
Date d'inscription
samedi 9 avril 2005
Statut
Membre
Dernière intervention
4 mai 2007

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 ?!

Cordialement,
Merci