Utiliser un fichier .c dans mon programme avec QT designer - C++ - Programmation
Marsh Posté le 31-12-2004 à 18:18:10
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 :
|
par:
Code :
|
Attention: Je ne suis plus très sûr que ce soit __cplusplus qu'il faille utiliser pour détecter du code c++. ..
Marsh Posté le 02-01-2005 à 15:41:20
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 :
|
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
Marsh Posté le 03-01-2005 à 06:45:55
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 :
|
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.
Marsh Posté le 03-01-2005 à 09:05:25
et puis les listes chainées ca existe en C++ : std::list<T>
Marsh Posté le 31-12-2004 à 14:41:04
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