Undefined reference - C - Programmation
Marsh Posté le 08-12-2004 à 23:28:05
Pierre-Luc a écrit : J'ai divisé mon programme en trois partie distinctes:
|
Est-tu sûr que les .o ont été recompilés? Montre le makefile complet
Marsh Posté le 09-12-2004 à 00:10:47
Emmanuel Delahaye a écrit : Est-tu sûr que les .o ont été recompilés? Montre le makefile complet |
Je n'ai pas construit de makefile pour le moment. Je fais simplement un "cc -c" pour chacun des fichiers et que je lie ensuite par "cc -o ...".
Marsh Posté le 09-12-2004 à 00:12:47
Taz a écrit : un petit -Wall déjà ça ferait pas de mal |
Cette option ne change rien au problème malheureusement...
Marsh Posté le 09-12-2004 à 04:15:18
Tu sais que tu peux faire directement "cc -o camapp main.c image.c camera.c" hein. Si tu es sûr d'avoir recompilé camera.c, je vois pas trop... T'aurais pas déclaré la fonction static ?
Marsh Posté le 09-12-2004 à 08:10:34
Pierre-Luc a écrit : Je n'ai pas construit de makefile pour le moment. Je fais simplement un "cc -c" pour chacun des fichiers et que je lie ensuite par "cc -o ...". |
Je t'engage à t'y mettre toute affaires cessantes.
http://mapage.noos.fr/emdel/codage.htm#organiser
Marsh Posté le 10-12-2004 à 00:06:22
matafan a écrit : Tu sais que tu peux faire directement "cc -o camapp main.c image.c camera.c" hein. |
Je l'ai appris juste après avoir posté mon message.
Pour ce qui est du "static", non, je n'ai rien défini de la sorte. Si certaines personnes souhaitent jetter un coup d'oeil au code source intégral, le voici à cette adresse:
http://machivi.ma.cx/pierre-luc/camapp/
Marsh Posté le 10-12-2004 à 02:30:36
La source du problème a été fixée. C'était simplement une erreur de fermeture d'accolades qui rendait ma fonction "locale" à l'intérieure de la précédente. En espérant ne plus rencontrer trop d'erreurs du genre encore... Merci du coup de main. En passant, je prévois utiliser un éditeur de texte dédié au C plutôt que simplement VI qui rend le repérage de blocs difficile.
Marsh Posté le 10-12-2004 à 08:26:58
Pierre-Luc a écrit : La source du problème a été fixée. |
Tu veux dire corrigée (fixed)
Citation : |
En C standard, il n'y a pas de fonction 'locale'. C'est une extension supportée par certains compilateurs. Si tu as gcc, je te conseille de désactiver les extensions :
-W -Wall -O2 -ansi et éventuellement -pedantic
si tu cherches à faire du code portable.
Citation : |
J'utilise UltraEdit32. J'y ai incorporé un outil externe (GNU Indent 1.91) qui fait la mise en en forme du code.
Marsh Posté le 16-12-2004 à 03:41:59
Je me suis attardé à reviser le code source du programme en éliminant au passage plusieurs erreurs simples. L'application capture simplement une image sur le dispositif à /dev/video0 et place chacun des pixels à l'intérieur d'un fichier PPM. Évidemment, ce code n'a pas été développé dans ce but précis, mais a plutôt servi à établir les premières étapes de l'organisation d'un projet plus grand. Pour les intéressés, la source est visible à cette adresse:
http://machivi.ma.cx/pierre-luc/camapp/
Pour compiler, il suffit de faire
gcc -Wall main.c image.c camera.c -o camapp
et de lancer l'exécutable avec les droits de super-utilisateur (si l'accès à /dev/video0 lui est réservé).
Merci du coup de main.
P.S.
Si vous n'utilisez pas la Quickcam comme caméra avec le pilote qc-usb, tachez de ne pas omettre de commenter l'appel "system" dans main.c
Marsh Posté le 08-12-2004 à 23:22:30
J'ai divisé mon programme en trois partie distinctes:
camera.c et son header (capture depuis V4L)
image.c et son header (conversion en PPM)
main.c appelant les fonctions de camera.c
Le problème est que lorsque je tente de compiler le tout, j'obtiens le message
pour la commande
Ce que je n'arrive pas à saisir c'est qu'avant l'ajout de la fonction "captureImage", le code était compilé sans problèmes. Ce n'est donc peut-être pas un problème d'inclusion... Ce ne peut être non plus l'ordre dans lequel les fichiers sont présentés au compilateur puisque qu'il me semble avoir respecter l'ordre de définition. Et de toutes manières, j'ai tenté toutes les combinaisons en vain...
camera.h
camera.c
main.c
*La fonction extractPix est définie dans le fichier image.c dont il est inutile de parler ici.
Merci pour la lecture. Le projet est en progression...