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

  FORUM HardWare.fr
  Programmation
  C++

  Creation de bibliotheque

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Creation de bibliotheque

n°238159
FabienM
Posté le 31-10-2002 à 21:40:50  profilanswer
 

Bonjour a tous ...  
 
J'ai un fichier .c qui calcul des matrices une generé manuellement et l'autre par l'ordinateur...puis qui les additionnent...  
il se compose d'une fonction main, d'une fonction affichage des matrice et d'une fonction somme des matrices...  
 
A partir de ce fichier je doit creer ma bibliotheque...c-a-d  
 
que je doit creer un fichier matrice.h (regroupant  
toutes les declarations relative aux matrices)  
 
un autre matrice.c (regroupant les procedures ou fonction relative aux matrices)  
 
et un fichier principal.c regroupant ma fonction main et l'appel des 2 fonctions affiche-matrice et somme-matrice  
 
 
voici le code des 3 fichiers :
 
le fichier matrice.h

Code :
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #define maxi 2
  4. typedef float matrice[maxi][maxi];
  5. matrice Mat;
  6. void afficheMat(matrice T);
  7. void sommeMat(matrice x, matrice y, matrice z);


 
le fichier matrice.c
 

Code :
  1. #include "matrice.h"
  2. void afficheMat(matrice T)        //fonction affichage des matrices  
  3. {
  4. int i,j;
  5. //-----------procedure d'affichage des matrices  
  6. for (i=0;i<maxi;i++)
  7. {
  8.   for (j=0;j<maxi;j++)
  9.   {
  10.    printf("%f ; ",T[i][j]);    //affichage reel des matrices  
  11.   }
  12. }
  13. fflush(stdin);
  14. getchar();
  15. }
  16. void sommeMat(matrice x, matrice y, matrice z)  //fonction somme des matrices  
  17. {
  18. int i,j;
  19. //------------calcul de la somme Mat1 + Mat2  
  20. for (i=0;i<maxi;i++)
  21. {
  22.   for (j=0;j<maxi;j++)
  23.   {
  24.    z[i][j]=x[i][j]+y[i][j];     //somme matrices  
  25.   }
  26. }
  27. fflush(stdin);
  28. getchar();
  29. }


 
le fichier principal.c
[/cpp]

Code :
  1. #include "matrice.h"
  2. void main()
  3. {
  4. /* Mat1 est une matrice dont les valeurs seront lues au clavier  
  5. */
  6. matrice Mat1 ;
  7. /* Mat2 est une matrice dont les valeurs seront g?n?r?es al?atoirement  
  8. */
  9. matrice Mat2 ;
  10. /* MatS est la somme des matrices Mat1 + Mat2  
  11. */
  12. matrice MatS ;
  13. /* i et j sont des entiers, indices des lignes et des colonnes des 2 matrices  
  14. */
  15. int i, j ;
  16. //------------lecture des valeurs des coefficients de Mat1 au clavier  
  17. printf("Donner les coefficients de la matrice :\n" ) ;
  18. for (i=0;i<maxi;i++)              //for pour la 1ere dimension  
  19. for (j=0;j<maxi;j++)          //for pour la 2eme dimension  
  20. {
  21.   printf("\ndonner M(%d, %d) : ", i, j) ;
  22.   scanf("%f", &Mat1[i][j]) ; //un indice par dimension  
  23. }
  24. //------------g?n?ration al?atoire des valeurs des coefficients de Mat2  
  25. randomize();
  26. for (i=0;i<maxi;i++)
  27. for (j=0;j<maxi;j++)
  28. {
  29.   Mat2[i][j] = random(10001)-5000 ;
  30. }
  31. //------------affichages des deux matrices Mat1 et Mat2  
  32. printf("\nMat1 : " ) ;
  33. afficheMat(Mat1) ;
  34. printf("\nMat2 : " ) ;
  35. afficheMat(Mat2) ;
  36. //------------affichage de la somme des matrices  
  37. sommeMat(Mat1,Mat2,MatS) ;
  38. printf("\nMatS : " ) ;
  39. afficheMat(MatS) ;
  40. fflush(stdin) ;
  41. getchar() ;
  42. }


 
quand je comile les 3 fichier je n'obtient pas d'erreur...mais par contre des que j'execute le fichier principal.c j'obtient 2 erreurs qui sont:  
 
Linker error: undefined symbol _afficheMat in principal.c  
Linker error: undefined symbol _sommeMat in principal.c  
 
de quoi peuvent venir ces erreurs ???


Message édité par FabienM le 03-11-2002 à 13:58:42
mood
Publicité
Posté le 31-10-2002 à 21:40:50  profilanswer
 

n°238163
corvincent
Posté le 31-10-2002 à 21:51:39  profilanswer
 

bon deja les librairie qui viennent de toi tu dois les declarer comme ca dans ton code :
 
#include "matrice.h" et non <matrice.h>
 

n°238173
chrisbk
-
Posté le 31-10-2002 à 22:46:13  profilanswer
 

pis le "le probleme est , qd je compile ca ne marche plus !! g pleins d'erreurs", j'aime bpc, ca nous aide a mort
(dis nous plutot les erreurs données par le compilo :O)

n°238178
corvincent
Posté le 31-10-2002 à 23:04:17  profilanswer
 

ben change deja ce que je viens de te dire car si le compilo ne trouve deja pas le prototypes de tes fonctions (*.h) et les fonctions elles memes (*.c) il genere des erreurs ....

n°238201
FabienM
Posté le 31-10-2002 à 23:48:11  profilanswer
 

Bon deja merci à tous !!
J'ai dc modifié l'inclusion de ma librairie entre guillemets...
ca corrige deja pas mal d'erreur!
 
Mais il m'indique encore 2 erreurs...ki st :
 
Linker error: undefined symbol _afficheMat in ....(vers le repertoire où se trouve le fichier principal)
 
et la seconde c la meme avec l'appel de la fonction _sommeMat !!
 
 
Euh sinon ma bibliotheque matrice.h doit se trouver obligatoirement ds le repertoire avec les autres bibliotheques ?? ou seulement ds le meme repertoire ke mon fichier principal ??
 
merci encore !

n°238277
corvincent
Posté le 01-11-2002 à 12:04:18  profilanswer
 

bon, tes deux fichiers c qui sont a part donc en dehors de ton main et dont les prototypes sont declarés dans un *.h tu les compiles simplement et tu insere dans ton projet principal les *.obj generé par le compilateur. Normalement les erreurs de linker devraient disparaitres...
 
Bonne chance
 
et n'hesite pas

n°238325
FabienM
Posté le 01-11-2002 à 14:41:56  profilanswer
 

J ai fait ce ke tu m'a dit mais il y a tjr les 2 meme erreurs
 
Linker Error pour afficheMat et pour sommeMat !!
 
peut tu m'eclairer sur l'erreur linker error ..
merci !

n°238415
Ace17
Posté le 01-11-2002 à 22:46:17  profilanswer
 

Tes fichiers, ce sont tous des .c ou .h? J'avais déja eu des problemes en combinant les .c et les .cpp

n°238422
FabienM
Posté le 01-11-2002 à 23:28:10  profilanswer
 

Euh ...
eh bien j'ai 2 fichiers en .c (principal.c et matrice.c)
et 1 en .h (matrice.h)
 

n°238463
Ace17
Posté le 02-11-2002 à 09:55:19  profilanswer
 

hmmmmmm c'est bizzare... Tu les compiles avec quelle commande

mood
Publicité
Posté le 02-11-2002 à 09:55:19  profilanswer
 

n°238483
FabienM
Posté le 02-11-2002 à 11:01:08  profilanswer
 

J'utilise Turbo C++ comme compilateur....je sais c pas tres recent mais on utilise cela !!
 
Sinon je compile mes fichiers avec la commande compile puis ( il n'y a aucune erreur dans les 3 fichiers)
puis j'execute avec la commande run le fichier principal.....et la 2 erreurs de liens !!
 
là je n'y comprend plus rien !

n°238490
Ace17
Posté le 02-11-2002 à 11:23:16  profilanswer
 

Tu pourrais éditer ton premier post? Ca serait plus clair. On dirait que y'a un fichier qui apparait deux fois... Et rajoute aussi des balises spéciales pour le code source, ca sera mieux


Message édité par Ace17 le 02-11-2002 à 11:23:43
n°238492
FabienM
Posté le 02-11-2002 à 11:29:59  profilanswer
 

voila le post a été edité et j'espere avoir été plus clair ;)

n°238508
Ace17
Posté le 02-11-2002 à 12:48:50  profilanswer
 

En effet c'est beaucoup plus clair! Maintenant, es tu vraiment sur que ce soit ca que tu essaie de compiler? Car je vois deux erreurs qui devraient t'empecher d'arriver jusqu'a ton probleme : les iterateurs dans afficheMat ne sont pas déclarés; et aussi la variable globale matrice Mat est présente en deux exemplaires dans ton programme : un pour matrice.c et un pour principal.c
Tu as du faire des modifications depuis dans tes fichiers source.

n°238646
FabienM
Posté le 02-11-2002 à 19:56:12  profilanswer
 

Alors ma variable globale je la met ds le fichier principal et je la supprime de matrice.h ??
sinon je ne comprend pas ce que tu veut dire par les iterateur ne sont pas declarer ds afficheMat !
 
car si tu veux avant de creer 3 fichiers avec librairie .H
le programme etait en 1 seul morceau et fonctionnait sans aucun probleme...

n°238695
Ace17
Posté le 02-11-2002 à 21:48:51  profilanswer
 

Ben ta variable globale elle sert a quoi en fait? Elle n'est a priori référencée nulle part! Supprime la carrément. D'autre part, les i et j que tu utilises dans afficheMat et sommeMat, ils sont déclarés ou?

n°238782
FabienM
Posté le 03-11-2002 à 13:00:51  profilanswer
 

Si si g bien declaré les variable i et j ....c juste ke g mis les mauvais fichiers (g tellement fait d'essai...)
je les ai declarée ds le fichier matrice.c

n°238784
Ace17
Posté le 03-11-2002 à 13:18:52  profilanswer
 

oui justement c'est ce que je disais, donc pourrait tu mettre les bons fichiers? :)

n°238803
FabienM
Posté le 03-11-2002 à 14:02:33  profilanswer
 

Voila c modifié...
j'ai supprimé ma variable globale mais tjr les meme erreurs de liens!

n°238824
Ace17
Posté le 03-11-2002 à 15:40:39  profilanswer
 

Bon ben ce code source ne peut pas etre mis en cause; ce n'est pas lui le responsable. Moi je pense que ca vient de la commande de compilation
 
edit : ta variable globale est toujours la! :D


Message édité par Ace17 le 03-11-2002 à 16:42:15
n°238846
FabienM
Posté le 03-11-2002 à 16:48:59  profilanswer
 

je ne sais pas de koi ca vient mais je verrai ca cette semiane a l'IUT !!!
mais merci de ton aide [:zone prix]

n°239635
Musaran
Cerveaulté
Posté le 05-11-2002 à 00:26:46  profilanswer
 
mood
Publicité
Posté le   profilanswer
 


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

  Creation de bibliotheque

 

Sujets relatifs
[VB6]Rapidité de création d'app ? (HotKey pb)[C/C++] creation d'un service Win32
Cherche librairie pour assistance à la création d'imagesSite internet en creation, demande d'aide merci..
Norton Ghost 2003 : création d'un CD d'amorce avec un menu sous DOS ![ C++ Builder] Creation d'objets à l'éxécution ....
création d'une DLL avec import des fonctions d'une autre DLL[PHP] Création de variables dans une boucle et récupération?[Règlé]
variable d'Active Directory pr la creation de compte via un script VBCréation dynamique d'un TStringGrid
Plus de sujets relatifs à : Creation de bibliotheque


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