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 :

Compilation C++ et Ada


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 32
    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
    Expert confirmé

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 032
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 032
    Billets dans le blog
    12
    Par défaut
    Ta fonction c++ est-elle dans une lib ou une dll ?
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  3. #3
    screetch
    Invité(e)
    Par défaut
    dans ton fichier CPP, les "include gards" sont inutiles. D'ailleurs on les appelle des "include gards" seulement parce qu'ils sont dans les includes

    pour ta fonction, Ada ne comprend que le C, pas le C++. Il faudra donc que tu indiques au compilateur d'utiliser l'export en C au lieu du défaut (C++) en ecrivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    extern "C" int getNbElements() {...}
    enfin, il faudra sans doute rajouter -lstdc++ -lsup++ lors du link, ou linker avec g++ a la place

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 32
    Par défaut
    Citation Envoyé par dragonjoker59 Voir le message
    Ta fonction c++ est-elle dans une lib ou une dll ?
    Ma fonction C++ est dans une lib. Je développe sous Linux.

Discussions similaires

  1. Compilation C++ et Ada
    Par rocklass dans le forum Ada
    Réponses: 5
    Dernier message: 22/03/2011, 17h28
  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