IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Utilisation d'un .h écrit en C dans un prog écrit en C++


Sujet :

C++

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 22
    Points : 8
    Points
    8
    Par défaut Utilisation d'un .h écrit en C dans un prog écrit en C++
    Bonjour,

    Je voudrais réactualiser un ancien programme en C en passant sous Turbo C++.

    Dans ce .c, j'inclue un fichier .h pour que le compilateur comprenne qu'il s'agit de déclaration faîtes en C, j'ai rajouté:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    extern "C" {//déclarations}
    Mais à la compilation j'obtiens l'erreur suivante :

    "Declaration terminated incorrectly"

    Je n'arrive pas à résoudre ce problème. Je n'ai pas trouvé dans les FAQS ni sur le forum quelque chose qui puisse m'aider.

    Pouvez-vous me venir en aide ?
    Merci d'avance.

    Seb

  2. #2
    Membre averti Avatar de Higestromm
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    516
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 516
    Points : 412
    Points
    412
    Par défaut
    Je ne suis pas sur ce que je raconte mais est ce qu'il ne faut pas ecrire ;
    extern "c" { } <= en minuscule ???
    J'aime pas les épinards... Mais alors pas du tout

  3. #3
    Futur Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 22
    Points : 8
    Points
    8
    Par défaut
    Merci d'avoir répondu!!

    J'ai essayé mais ça ne vient pas de là.

    Je commence à être à court d'idées !!

  4. #4
    HRS
    HRS est déconnecté
    Membre confirmé
    Avatar de HRS
    Inscrit en
    Mars 2002
    Messages
    677
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 677
    Points : 638
    Points
    638
    Par défaut
    le coding suivant permet la prise en compte par un compilo C++ et
    l'ignorance par un compilo C
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #ifdef __cpluplus
    extern "C"{
    #endif
     
    // votre .h
     
    #ifdef __cpluplus
    }
    #endif

  5. #5
    Futur Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 22
    Points : 8
    Points
    8
    Par défaut
    le coding suivant permet la prise en compte par un compilo C++ et
    l'ignorance par un compilo C
    Code:

    #ifdef __cpluplus
    extern "C"{
    #endif

    // votre .h

    #ifdef __cpluplus
    }
    #endif
    Si j'ajoute ce code le fichier .h se compile correctement, la compilation du .c fonctionne mais lorsque je clique sur "Link" il m'affiche ce type de message d'erreur :

    Undefined symbol _Toto in module fichier.c

    Alors que Toto est définis dans le .h que j'ai inclus.
    Et là je me demande si le .h ou le .c ne comporte pas une erreur ou si ça vient d'une option du compilateur.

  6. #6
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Essayons de clarifier. tu as les fichiers a.c et a.h écrits en C. Tu as le fichier b.cpp écrit en C++, et tu veux dans ce fichier utiliser des fonctionnalités de a, c'est bien ça ?

    Si oui, tu peut modifier a.h en ajoutant au début
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #ifdef __cpluplus
    extern "C"{
    #endif
    Et à la fin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #ifdef __cpluplus
    }
    #endif
    Ensuite, si tu compile a.c avec un compilateur C, et b.cpp avec un compilateur C++, tu devrais réussir à lier les deux sans problèmes.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  7. #7
    Futur Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 22
    Points : 8
    Points
    8
    Par défaut
    En fait j'ai récupéré un fichier a.c et je l'ai ouvert sous Turbo C++.
    Dans a.c j'ai inclus b.h lui aussi écrit en C.

    J'ai essayé d'ajouter les lignes "#ifdef __cplusplus etc..." dans a.c et b.h mais j'ai les mêmes erreurs que précédemment.

  8. #8
    Membre averti Avatar de Higestromm
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    516
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 516
    Points : 412
    Points
    412
    Par défaut
    Je me demande si le probleme de vien pas du contenu des .h que tu inclus ?
    J'aime pas les épinards... Mais alors pas du tout

  9. #9
    Futur Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 22
    Points : 8
    Points
    8
    Par défaut
    Apparemment en créant un projet et en y incluant mes fichiers a.h, b.h et les fichiers .lib nécessaires (car je gère une interface IEEE) il créé correctement le fichier exécutable. Je n'ai plus d'erreur ...
    Merci d'avoir répondu à ma demande.

    Seb

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utilisation d'une bib. (écrite en Java) dans un programme écrit en C++
    Par Farida1702 dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 13/04/2007, 13h51
  2. utiliser du code écrit en c dans visualc++
    Par Slimounet45 dans le forum Visual C++
    Réponses: 6
    Dernier message: 05/04/2007, 19h53
  3. Réponses: 6
    Dernier message: 07/04/2006, 01h10
  4. utiliser la touche SHIFT ou CTRL+A dans un DBGRID
    Par richard038 dans le forum Bases de données
    Réponses: 2
    Dernier message: 11/10/2005, 09h06
  5. utilisation de "LIKE" avec un type datetime dans r
    Par ericmart dans le forum Langage SQL
    Réponses: 8
    Dernier message: 06/11/2003, 14h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo