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 :

edition de lien mixte


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Inscrit en
    Octobre 2003
    Messages
    160
    D�tails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 160
    Par d�faut edition de lien mixte
    Salut tlm
    j'ai un probl�me d'�dition de lien sous Linux
    j ai un objet compil� (test.o) avec gcc qui offre une fonction f() �crite en C . je veux utiliser cette fonction dans C++.
    j'ai fais un petit test qui me renvoies une erreur


    [adel@laptotAdel ml]$ gcc -c test.c
    [adel@laptotAdel ml]$ g++ -c main.cpp
    In file included from /usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/backward/iostream.h:31,
    from main.cpp:1:
    /usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/backward/backward_warning.h:32:2: warning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated.
    [adel@laptotAdel ml]$ g++ main.o test.o
    main.o(.text+0x1d): In function `main':
    main.cpp: undefined reference to `f()'
    collect2: ld a retourn� 1 code d'�tat d'ex�cution


    et voici le code
    [adel@laptotAdel ml]$ cat test.c
    int f(){
    return 0;
    }
    [adel@laptotAdel ml]$ cat main.cpp
    #include <iostream.h>
    main(){
    int f();
    cout << f() << endl;
    return 0;
    }

  2. #2
    R�dacteur

    Avatar de Matthieu Brucher
    Profil pro
    D�veloppeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    D�tails du profil
    Informations personnelles :
    �ge : 43
    Localisation : France, Pyr�n�es Atlantiques (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par d�faut
    Vu le code, c'est normal.
    <iostream.h> est d�pr�ci�, on utilise <iostream> en C++
    ensuite, essaie g++ test.o main.o, qu'il puisse voir la fonction f avant son appel.

  3. #3
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    2 155
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 2 155
    Par d�faut
    J'ai eu pas mal de pbs avec l'�dition des liens entre un programme C, et un main en C++. Le truc c'est que le compilateur C va "changer les noms de fonction" en rempla�ant une fonction Toto par Toto16 par exemple... Alors qu'en C++, les noms sont identiques.
    Du coup, l'�dition des liens ne se fait pas.
    Tu l'as d�clar� comme extern "C"?

  4. #4
    R�dacteur

    Avatar de Matthieu Brucher
    Profil pro
    D�veloppeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    D�tails du profil
    Informations personnelles :
    �ge : 43
    Localisation : France, Pyr�n�es Atlantiques (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par d�faut
    Citation Envoy� par poukill
    J'ai eu pas mal de pbs avec l'�dition des liens entre un programme C, et un main en C++. Le truc c'est que le compilateur C va "changer les noms de fonction" en rempla�ant une fonction Toto par Toto16 par exemple... Alors qu'en C++, les noms sont identiques.
    Du coup, l'�dition des liens ne se fait pas.
    Tu l'as d�clar� comme extern "C"?
    C'est le contraire. les noms en C++ sont d�cor�s, pas en C.

  5. #5
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    2 155
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 2 155
    Par d�faut
    Citation Envoy� par Miles
    C'est le contraire. les noms en C++ sont d�cor�s, pas en C.
    Oups...
    Le principe �tait l� quand m�me...

Discussions similaires

  1. Edition des liens crois�e
    Par Matthieu Brucher dans le forum Windows
    R�ponses: 3
    Dernier message: 22/03/2006, 00h08
  2. R�ponses: 11
    Dernier message: 20/01/2006, 12h35
  3. Edition de liens dynamique sous linux
    Par Ipoupaille dans le forum Linux
    R�ponses: 4
    Dernier message: 09/01/2006, 21h53
  4. Edition de liens et librairie dynamique
    Par nicolas.pied dans le forum C++
    R�ponses: 9
    Dernier message: 14/11/2005, 14h29
  5. Rôle de l'édition de lien?
    Par sali dans le forum C
    R�ponses: 6
    Dernier message: 14/05/2005, 21h17

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