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

  FORUM HardWare.fr
  Programmation
  C++

  Utiliser un fichier .c dans mon programme avec QT designer

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Utiliser un fichier .c dans mon programme avec QT designer

n°934656
smilm
Posté le 31-12-2004 à 14:41:04  profilanswer
 

Bonjour,
 
Je souhaite utiliser des fonction qui sont dans un fichier .c. J'ai essayé d'insérer le header (.h) dans "include in declaration" ou "include in implementation". J'ai insérer le fichier .c en faisant project - add file.
 
Plus precisement, la compialtion se passe bien. Les fichiers se compilent separement (donc il trouve bien les prototypes dans le .h).
 
Au moment de linker les .o pr fr l'executable, la, on chope les undefined reference to "mafonction".
On a regarder el Makefile lors du linkage le fichier list.o est present (et donc a bien compiler...)
 
Je crée le Makefile avec qmake, puis je fais make.
J'ai toujours la même erreur : undefind reference to "mafonction()".
Est-ce que quelqu'un aurai la solution ?
 
Merci beaucoup.
Bonne fête!
 
David


Message édité par smilm le 31-12-2004 à 14:56:35
mood
Publicité
Posté le 31-12-2004 à 14:41:04  profilanswer
 

n°934714
Lam's
Profil: bas.
Posté le 31-12-2004 à 18:18:10  profilanswer
 

C'est parce que ton fichier C est compilé par un compilo C, et le reste en C++, non ? Si c'est le cas, dans ton fichier h, remplace:  

Code :
  1. prototype de mafonction()


par:

Code :
  1. #ifdef __cplusplus
  2. extern "C" {
  3. prototype de mafonction()
  4. }
  5. #endif


 
 
Attention: Je ne suis plus très sûr que ce soit __cplusplus qu'il faille utiliser pour détecter du code c++.  ..

n°935199
smilm
Posté le 02-01-2005 à 15:41:20  profilanswer
 

Merci beaucoup pour ta réponse. Cette fois-ci je compile mais les fonctions C qui modifient mes données renvoient n'importe quoi.
 
Je m'explique: Je recherche à faire une liste chainée d'éléments. Ces éléments contiennent un certain nombre de champs. Ce sont tous des char*. Ma liste d'éléments à une entête qui contient le nombre d'éléments.  
 
J'appelle dans mon programme C++, une fonction C qui modifie le header de la liste. Cette fonction appelle elle-même une fonction qui ajoute un élément dans la liste chainée.
 
Dans mon programme C++, je m'apperçois que le header a été bien modifié (ie: la mise à jour du nombre d'élément se fait correctement).
Par contre les champs de chacun des éléments de la liste chainée contiennent n'importe quoi... Or quand je compile mon .c indépendemment du programme C++ et que je test mes fonctions C, tout semble très bien se passer... Mes fonctions C semblent donc être corecte.
 
Avec ta méthode, si je fait ce que tu m'a dit pour toutes mes fonction C:

Code :
  1. * #ifdef __cplusplus
  2.     * extern "C" {
  3.     * prototype de mafonction()
  4.     * }
  5.     * #endif


 
J'ai des warnings avec les fonctions que j'utilise dans mon .c.
Que je fasse commme tu me l'as indiqué uniquement avec mes prototypes des fonctions qui seront utilisées en C++, ou que je  le fasse avec les prototype de toutes mes fonctions toutes les données sont invalides. Que faire ?
 
Merci beaucoup pour votre aide.
David
 
 

n°935494
Lam's
Profil: bas.
Posté le 03-01-2005 à 06:45:55  profilanswer
 

Bon, déjà, tu peux mettre tout le contenu de ton fichier include dans le bloc extern "C" (c'est pour ça que je t'ai donné la version avec accolade). Tu peux regarder les fichiers include standards (/usr/include) pour te donner une idée (quoique chez moi, dans les include standards, il y a une macro qui donne:

Code :
  1. #define _BEGIN_STD_C extern "C" {
  2. #define _END_STD_C  }


 
 
D'autre part, Il va te falloir être plus explicite sur les erreurs et warnings que tu as. T'as qu'à balancer le code de la fonction C, le code C++ qui l'appelle, et les messages de Warning que tu obtiens.

n°935511
Joel F
Real men use unique_ptr
Posté le 03-01-2005 à 09:05:25  profilanswer
 

et puis les listes chainées ca existe en C++ : std::list<T>


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

  Utiliser un fichier .c dans mon programme avec QT designer

 

Sujets relatifs
Proprietaire de fichierProtection de fichier
[ASP] Lecture inachevée d'un fichierStructure d'un fichier MP3
déclaration xml inattendue / erreur dans fichier xslt ?Retour a la ligne dans un fichier texte.
shell script qui lit dans un fichier[QT] Comment utiliser des QComboTableItem dans une QDataTable ?
probleme d'importation de fichierfichier CSV
Plus de sujets relatifs à : Utiliser un fichier .c dans mon programme avec QT designer


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