Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3010 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Projet C

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Projet C

n°1947900
weed
Posté le 07-12-2009 à 14:07:00  profilanswer
 

Bonjour,  
 
Je n'arrive pas à compiler un mini projet en C avec 3 fichiers. J'utilise Code::block sous Windows XP.
 
- main.c

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include "fonctions.h"
  4. int main()
  5. {
  6.     affichage(2);
  7.     printf("Hello world!\n" );
  8.     return 0;
  9. }


 
 
- fonctions.h

Code :
  1. #ifndef FONCTIONS_H_INCLUDED
  2. #define FONCTIONS_H_INCLUDED
  3. void affichage (int i);
  4. #endif // FONCTIONS_H_INCLUDED


 
- fonctions.c  

Code :
  1. #include "fonctions.h"
  2. void affichage (int i)
  3. {
  4.     printf("c mon affichage " );
  5. }


 
 
J'obtiens le message dans l'onglet Build Message :  
 
obj\Debug\main.o||In function `main':|
C:\Documents and Settings\Consultant.JURA-LERECULET\Mes documents\projetVide\vide\main.c|7|undefined reference to `_affichage'|
||=== Build finished: 1 errors, 0 warnings ===|
 
Le prototype de la fonction affichage est bien écrit mais main.c n'arrive pas à récupérer la définition (si je me trompe pas) dans le fichier fonctions.c
 
Est ce que vous avez une idée du pourquoi ?  
 
Sur code:block, la fonction de complémentation est présente. Lorsque je tape les premières lettres "affi" par exemple, la fonction "affichage" est reconnu par Code:block.  
 
Je pense donc que j'ai bien fais les inclusions  
#include "fonctions.h" dans le fichier main.c et fonctions.c

mood
Publicité
Posté le 07-12-2009 à 14:07:00  profilanswer
 

n°1947924
Ummon
Posté le 07-12-2009 à 14:45:16  profilanswer
 

Apparemment c'est à l'édition des liens que ça coince.
Soit 'fonctions.c' n'est pas compilé (devrait produire un 'fonctions.o' de la même manière que le 'main.o') ou soit le "linker" n'est pas renseigné sur la présence de 'fonctions.o'.

n°1947998
weed
Posté le 07-12-2009 à 15:49:47  profilanswer
 

Je te remercie, ummon.  
Dans le repertoire du projet, Code:block a créé un repertoire obj\Debug. Dans ce répertoire, il n'y avait que main.o.  
 
J'ai résolu mon problème en allant dans les propriétés du fichiers fonctions.c (clique droit => properties) dans Code:block  
 
Dans l'onglet Build, j'ai coché la case "Debug" dans la section "Belong in targets" comme c'était le cas pour main.c.
 
Je comprends pas trop cette notion de Debug dans code:block mais maintenant le fichier fonctions.o est maintenant créé, et ma mini appli fonctionne.
 
Merci beaucoup

n°1948115
ptitchep
Posté le 07-12-2009 à 18:12:10  profilanswer
 

Salut
Code blocks permet par défaut de produire 2 versions de ton programme qui sont debug et release. Cela permet de compiler avec certaines options lorsque tu travailles sur le code (debug) puis lorsque tu génères la version finale avec d'autres options. Donc si tu reviens sur ton code après avoir générer la release, tu n'as pas tout à reparamétrer, juste à sélectionner "debug".
Chaque fichier que tu ajoutes au projet peut être intégré ou non au différentes versions. Par exemple un fichier peut être compilé en debug mais pas release. Je pense que ton fichier fonctions.c n'était pas inclus dans la génération de la version debug (et peut-être pas non plus dans la release).


---------------
deluser --remove-home ptitchep
n°1953532
alouet
Posté le 29-12-2009 à 00:52:02  profilanswer
 

Bonjour à tous,
 
Je suis nouvelle dans le forum.
 
j'aimerai solliciter votre aide pour la lecture d'un programme.  
 
Il s'agit en fait des écritures du genre:  
" #pragma omp parallel default(none) \
shared(f,g,h,im,jm,km,is,js,ks,iv,jv,stdout,par,\
iposc0,iposc1,iposc2,iposc3,iposc4,iposc5,iposc6,b,bnum,v,vnum,\
c0,c1,c2,c3,c4,c5,c6,c0num,c1num,c2num,c3num,c4num,c5num,c6num,\
sigmac,Lc,P,xstart)
"
 
((f,g,h,im,jm,km,is,js,ks,iv,jv,stdout,par
iposc0,iposc1,iposc2,iposc3,iposc4,iposc5,iposc6,b,bnum,v,vnum
c0,c1,c2,c3,c4,c5,c6,c0num,c1num,c2num,c3num,c4num,c5num,c6num
sigmac,Lc,P,xstart))
 
sont des paramètres que je connais bien.
 
Mais que veut dire: "#pragma omp parallel default(none) \
shared(...\
...\
...\
...)" ?
 
 
Merci.

n°1953540
Joel F
Real men use unique_ptr
Posté le 29-12-2009 à 07:51:54  profilanswer
 

alouet : t'as le droit de creer un sujet pour ta question qui n'a aucun rapport avec le fil en cours ...
Pour te repodnre, il s'agit de primitive de parallelisation openMP

n°1953698
alouet
Posté le 29-12-2009 à 16:27:03  profilanswer
 

Ok,
Merci Joel


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Projet C

 

Sujets relatifs
configurer mon projet C avec ODBC et Mysqlconfigurer mon projet C avec ODBC et Mysql
Langage C, Projet, Puissance 4 en langage C[AIDE SVP] Lancer projet C++ sur autre un ordinateur sans VS 2008
[Visual C#] Problème projet après changement de PCProjet : C ou Java ? Comment modéliser avec GTK ?
utiliser une dll compilée en C# dans un projet VisualC++Projet en C
[C] Fournir un projet compilé sous Visual C++ à un ami 
Plus de sujets relatifs à : Projet C


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR