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

Ada Discussion :

Compilation C++ et Ada


Sujet :

Ada

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 32
    Points : 27
    Points
    27
    Par défaut Compilation C++ et Ada
    Je viens de faire un programme Ada qui appelle un programme C++.

    Voici mon fichier .cpp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #ifndef INTERFACE4ADA_CPP_
    #define INTERFACE4ADA_CPP_
     
    int getNbElements() {
    	return 0;
    }
    #endif /* INTERFACE4ADA_CPP_ */
    Voici mon fichier .adb :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    with Ada.Text_Io, Ada.Integer_Text_Io;
    with Interfaces.C;
    use Ada.Text_Io, Ada.Integer_Text_Io;
     
    procedure PCC is
     
    	package C renames Interfaces.C;
     
    	procedure init is
    		function Get_Nb_Elements return integer ;
    		pragma import(C, Get_Nb_Elements, "getNbElements");
     
    	nb_elements : integer;
    	begin
    		Put_Line("Initialisation du PCC");
       	        nb_elements := Get_Nb_Elements;
    	end;
    begin
            Put_Line("Debut du programme");
    	init;
            Put_Line("Fin du programme");
    end PCC;
    Au moment du link, je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $> gnatlink pcc.ali Interface4Ada.o
    Interface4Ada.o:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
    ./pcc.o: In function `pcc__init.2459':
    pcc.adb:(.text+0xa9): undefined reference to `getNbElements'
    collect2: ld returned 1 exit status
    gnatlink: error when calling /usr/bin/gcc-4.4
    Je ne comprends pas d'où vient cette erreur.

    Est-ce que quelqu'un peut m'aider ?

    Merci d'avance.

  2. #2
    Membre averti Avatar de Blackknight
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2009
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2009
    Messages : 214
    Points : 383
    Points
    383
    Par défaut
    J'ai mis du temps à comprendre mais j'ai finalement trouvé.
    Le gxx a trait à un programme en C++ et non pas à un programme en C.
    En effet, GCC se base sur l'extension pour définir le type de compilation à appliquer. Dans ton cas, il a détecté un programme en C++ et le fait donc dépendre du runtime C++.
    Ainsi, le seul fait de renommer ton fichier en Interface4Ada.c résoud le problème

    Après, si tu veux vraiment compiler du C++, je te conseille de lire cette partie.
    Pour te faciliter les choses, voici les étapes :
    1. Compiler le source gcc -c Interface4Ada.cpp
    2. Trouver le nom de la fonction avec nm Interface4Ada.o
    3. Modifier ton pragma. Dans mon cas, pragma import(C, Get_Nb_Elements, "_Z13getNbElementsv");
    4. lier avec gnatlink comme si de rien n'était

    L'interfaçage avec des classes en C++ est plus complexe que ton cas donc je te le laisse comme exercice ;-)

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci Blackknight,
    Ca passe avec Pragma (C...) malgré que ce soit du c++ ?


    A mais non, t'as pas donné la soluce en fait.

  4. #4
    Membre averti Avatar de Blackknight
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2009
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2009
    Messages : 214
    Points : 383
    Points
    383
    Par défaut
    Ben non, ce serait trop facile sinon !!
    Je l'ai donnée ? Mince, c'est pas mon genre

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Blackknight Voir le message
    Ben non, ce serait trop facile sinon !!
    Je l'ai donnée ? Mince, c'est pas mon genre
    J'ai lu ton message en deux fois, et entre temps j'ai oublié ce que je venais de lire.
    D'où mes correction et un bon fou rire.

    Désolé pour l'embrouille.

  6. #6
    Membre averti Avatar de Blackknight
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2009
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2009
    Messages : 214
    Points : 383
    Points
    383
    Par défaut
    Y a point d'embrouille mon bon jovalise
    Moi aussi, je t'ai lu deux fois et je me suis dit que t'avais perdu la boule

Discussions similaires

  1. Compilation C++ et Ada
    Par rocklass dans le forum C++
    Réponses: 3
    Dernier message: 21/03/2011, 14h56
  2. Erreur de compilation avec Ada.Strings.Unbounded
    Par semaj_james dans le forum Ada
    Réponses: 7
    Dernier message: 20/04/2007, 16h28
  3. Compilation ADA sous Linux x86-64
    Par guitouu dans le forum Ada
    Réponses: 2
    Dernier message: 05/10/2006, 04h16
  4. [Ada] Problème de compilation !
    Par medismith dans le forum Ada
    Réponses: 4
    Dernier message: 17/06/2006, 11h28
  5. [Ada] Erreur de compilation
    Par Zéli dans le forum Ada
    Réponses: 8
    Dernier message: 26/05/2006, 15h55

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