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 :

déclaration de fonctions externes


Sujet :

C++

  1. #1
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut déclaration de fonctions externes
    Bonjour à tous!
    Je me posais une question vis à vis des déclarations de fonctions externes dans les fichiers d'en-têtes.
    Les templates doivent se déclarer dans la fonction principale, sous peine de ne pas être reconnue à l'édition des liens. (cf astuce de la FAQ)

    Comment dois-je déclarer la fonction suivante :
    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
    24
    CImgl <unsignedshort> importData (int numchoc, int camera, long image_deb, long image_fin) {
    
    int cr;
    unsignedshort *Images=NULL;
    CImgl <unsignedshort> liste;
    cr = IRimages(36181,1L,100L,120L,&Images);
    if (cr != 0) {
           std::cout << "erreur de communication avec le serveur" << std::endl;
    }
    else {
        for (int i=0; i<20; i++) {
                   CImg <unsignedshort> image (&Images[i*77120], 320, 241, 1, 1);
                  liste.push_back(image);
           }
    free(Images);
     
    liste.back().equalize_histogram();
    liste.back().display();
     
    return liste;
           }
    }
    
    pour qu'elle soit correctement reconnue à l'édition des liens...

    J'admet que je suis un peu perdu, car je suis dans un projet C++, qui utilise des fonctions C et libraries C, ainsi des fichiers .cpp ou se mêlent fonctions template et fonctions classiques...

    J'aurai grand besoin de votre éclaircissement !

  2. #2
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    si tu utilises des librairies et des fonctions C dans un programme C++... c'est pas du C++, c'est du C/C++ et c'est pas super terrible (c'est du C++ pas propre quoi)

    pour ta fonction, ce n'est pas une fonction template, elle renvoie un type qui est un type avec template, mais dans la signature de la fonction, tous les types sont entièrement définis, donc cette fonction peut être déclarée comme n'importe quelle autre fonction classique...
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  3. #3
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut
    Citation Envoyé par Swoög
    si tu utilises des librairies et des fonctions C dans un programme C++... c'est pas du C++, c'est du C/C++ et c'est pas super terrible (c'est du C++ pas propre quoi)
    oui, je sais que c'est pas propre, le truc, c'est que j'ai découvert la STL en cours de programmation de ce gros projet...
    Et puis, certaines fonctions sont en C car sont utilisés par mes collègues sous Unix pour du temps-réel.
    Il faudrait que je recode tout, mais c'est long...

    Par contre, je ne comprend pas, je l'ai effectivement déclaré comme une fonction classique, et le link ne fonctionne pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    main.obj : error LNK2001: symbole externe non résolu "struct cimg_library::CImgl<unsigned short> __cdecl importData(int,int,long,long)" (?importData@@$$FYA?AU?$CImgl@G@cimg_library@@HHJJ@Z)
    
    Merci Swoög pour tes réponses!!!

  4. #4
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    "undefined reference"... j'aurais compris... mais "unresolved extern symbol" là... je vois pas...

    ta fonction est compilée à part du main ? tu as toujours accès au template (et à son code) quand tu appels ou compil la fonction ?
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  5. #5
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut
    Citation Envoyé par Swoög
    ta fonction est compilée à part du main ? tu as toujours accès au template (et à son code) quand tu appels ou compil la fonction ?
    Oui ma fonction est compilée à part du main dans un fichier analyse.cpp

    Mon main donne ça:
    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
    // d'autres fichiers de déclaration
    
    #include <list>
    #include <algorithm>
    #include <iostream>
    #include "CImg.h" // accès au template
    using namespace cimg_library;
     
    #include "quadrillage.h"
    #include "warping.h"
    #include "masque.h"
    #include "outils.h"
    #include "choixzone.h"
    #include "analyse.h"
    
    extern CImgl <unsigneds hort> importData (int numchoc, int camera, long image_deb, long image_fin); // déclaration de la fonction
     
    int main() {
    //etc ....
    

    Je comprend vraiment pas.

    Merci pour ton coup de main

  6. #6
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    si ta fonction est dans le analyse.cpp et que tu inclus analyse.h (je suppose que tu la déclares dans analyse.h) pas besoin de mettre la déclaration où tu la spécifie comme externe...
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  7. #7
    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 : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    C'est à l'édition des liens qu'il y a un souci. Il n'y a aps une bibliothèque à lier avec ?

  8. #8
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut
    Citation Envoyé par Swoög
    si ta fonction est dans le analyse.cpp et que tu inclus analyse.h (je suppose que tu la déclares dans analyse.h) pas besoin de mettre la déclaration où tu la spécifie comme externe...
    C'est exact, j'ai juste tenté autre chose dans le doute...

    Citation Envoyé par Miles
    C'est à l'édition des liens qu'il y a un souci. Il n'y a pas une bibliothèque à lier avec ?
    J'ai des bibliothèques à lier, pour IRimages par exemple... Mais elle est bien spécifiée, d'autres fonctions l'utilisent sans problèmes...

    C'est ça que je comprend pas. Cette fonction n'a rien d'extraordinaire. Il y a surement quelque chose d'autre qui ne va pas.

  9. #9
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Citation Envoyé par poukill
    C'est exact, j'ai juste tenté autre chose dans le doute...
    ça veut dire que sans mettre ceci ça fonctionne ?
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  10. #10
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut
    mon projet tournait, j'ai rajouté cette fonction hier... et impossible de vraiment l'inclure dans le projet, le linker m'envoi balader!

  11. #11
    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 : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Bon, alors cette fonction, elle est déclarée où ? ne serait-ce pas une fonction template tout de même ? Est-ce qu'elle a quelque part un .cpp dans laquelle elle est définie ? - y compris dans le code source de la bibliothèque - ?

  12. #12
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2006
    Messages : 58
    Points : 74
    Points
    74
    Par défaut
    Le problème pourrait-il être lié à l'utilisation du template dans la déclaration de la fonction ?

  13. #13
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut
    fichier analyse.cpp:
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    
    #ifdef ANALYSE_H
    /** Les codes retour (cr)
     
    0 : OK
    -1 : mauvais numéro de choc
    -2 : mauvais numéro de caméra
    -3 : erreur de transfert
    -4 : mauvais numéro d'images
    -5 : trop d'images demandées
    -6 : numéro image de début incorrect
    -7 : mauvaise valeur du pas
    -100 : erreur initialisation de Winsock
    -100 : connection sur le serveur impossible
    ********************************************/
     
    CImgl <unsignedshort> importData (int numchoc, int camera, long image_deb, long image_fin) {
    int cr;
    unsignedshort *Images=NULL;
    CImgl <unsignedshort> liste;
    cr = IRimages(36181,1L,100L,120L,&Images);
    if (cr != 0) {
    std::cout << "erreur de communication avec le serveur" << std::endl;
    }
    else {
    for (int i=0; i<20; i++) {
    CImg <unsignedshort> image (&Images[i*77120], 320, 241, 1, 1);
    liste.push_back(image);
    }
    free(Images);
     
    liste.back().equalize_histogram();
    liste.back().display();
     
    return liste;
    }
    }
    #endif
    
    fichier analyse.h :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    
    #ifndef ANALYSE_H
    #define ANALYSE_H
    CImgl <unsignedshort> importData (int numchoc, int camera, long image_deb, long image_fin);
    #endif
    
    le main.cpp (juste l'en-tête complète):
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    
    /*Main*/
    // Les 3 fonctions exportées de la DLL tsrir_c.dll
    extern "C" int IRnb_images( int num_choc, int camera, int *nbimages );
    extern "C" int IRimages( int num_choc, int camera, long image_deb,
    long image_fin, unsignedshort ** Images);
    extern "C" int IRimages_pas( int num_choc, int camera, long image_deb,
    long image_fin, long pas, unsignedshort ** Images );
     
    #include "calc_camir.h"
    // ---------> Interpolation linéaire des données
    extern "C" short Interpol (long *xTab, long *yTab, int lTab, float xVal, float *yVal);
    // ---------> Reset de la structure Endoscope (tout à 0)
    extern "C" void Reset_Endoscope (struct_endoscope *Endoscope);
    // ---------> Lecture d'une variable de type float dans Top
    extern "C" short LitTopFloat(long nchoc, char *NmProd, char *NmObj, char *NmPar, float *Val);
    // ---------> Lecture d'une variable de type String dans Top
    extern "C" short LitTopString(long nchoc, char *NmProd, char *NmObj, char *NmPar, char *Str);
    // ---------> Lecture d'un fichier LUT .txt (calibration)
    extern "C" short ReadFicLUT (char *NmFicLUT, long *xLUTi, long *yLUTi, short *lLUTi);
    // ---------> Construction de la LUT finale pour passer des DL en T°
    extern "C" short ConstructLUT (long *xLUTi, long *yLUTi, short lLUTi,
    short NumLUT, short Zone, struct_endoscope *Endoscope,
    float *xLUT , float *yLUT , short *lLUT );
    // ---------> Lecture des fichiers de calibration LUT1 ou 2 ou 3
    extern "C" short InitLUT (long nchoc, short nEndo, short nLUT, long *xLUTi, long *yLUTi, short *lLUTi);
    // ---------> Recopie de la LUT calibrée dans les varaibles de la structure Endoscope
    extern "C" void RecopieLUT(struct_endoscope *Endoscope , short Zone , float *DL , float *TP ,
    short lDL);
    // ---------> Lecture des données Top et initialisation de la structure Endoscope
    extern "C" short Init_Endoscope (long nchoc, short nEndo, struct_endoscope *Endoscope);
    // ---------> Calcul de la T° à partir des DL mesurés
    extern "C" short DL2Temp (struct_endoscope *Endoscope, short zone, long DL, float *Temp);
    // ---------> Calcul du DL à partir d'une température
    extern "C" short Temp2DL (struct_endoscope *Endoscope, short zone, float Temp, long *DL);
    #include <list>
    #include <algorithm>
    #include <iostream>
    #include "CImg.h"
    usingnamespace cimg_library;
     
    #include "quadrillage.h"
    #include "warping.h"
    #include "masque.h"
    #include "outils.h"
    #include "choixzone.h"
    #include "analyse.h"
    
    Je sais que c'est pas bien, mais toutes les fonctions déclarés extern "C" ne fonctionne pas si elles sont mises dans le fichier .h correspondant (je sais pas pourquoi). Peut-être que le mélange C/C++ n'est pas génial?

  14. #14
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2006
    Messages : 58
    Points : 74
    Points
    74
    Par défaut
    Pourquoi as-tu encadré le code C++ (de analyse.cpp) par un #ifdef/#endif ? Si c'est nécessaire as-tu défini ANALYSE_H dans les options de compilation de analyse.cpp (-DANALYSE_H dans les options) ? Si ce n'est pas le cas le compilateur compile un fichier vide et la définition de fonction est effectivement manquante.

  15. #15
    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 : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Parce qu'il y a des protections supplémentaires en C++ qui sautent ?
    C'est quoi ta ligne d'édition des liens ?

  16. #16
    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 : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Citation Envoyé par touco
    Pourquoi as-tu encadré le code C++ (de analyse.cpp) par un #ifdef/#endif ? Si c'est nécessaire as-tu défini ANALYSE_H dans les options de compilation de analyse.cpp (-DANALYSE_H dans les options) ? Si ce n'est pas le cas le compilateur compile un fichier vide et la définition de fonction est effectivement manquante.
    Surtout qu'analyse.cpp doit vraissemblablement inclure analyse.h...

  17. #17
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut
    Citation Envoyé par Miles
    Parce qu'il y a des protections supplémentaires en C++ qui sautent ?
    C'est quoi ta ligne d'édition des liens ?
    voilà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    
    Édition des liens en cours...
    main.obj : error LNK2001: symbole externe non résolu "struct cimg_library::CImgl<unsigned short> __cdecl importDonnees(int,int,long,long)" (?importDonnees@@$$FYA?AU?$CImgl@G@cimg_library@@HHJJ@Z)
    C:\Documents and Settings\GD280706\Bureau\analyse IR\IR\Debug\IR.exe : fatal error LNK1120: 1 externes non résolus
    

  18. #18
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2006
    Messages : 58
    Points : 74
    Points
    74
    Par défaut
    Essaie d'enlever les lignes #ifdef ANALYSE_H / #endif de analyse.cpp, recompile l'ensemble, et vois si ca aide.

  19. #19
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut
    Citation Envoyé par touco
    Essaie d'enlever les lignes #ifdef ANALYSE_H / #endif de analyse.cpp, recompile l'ensemble, et vois si ca aide.
    Hum merci pour le conseil Touco et Miles, voilà ce que ça donne

    C'est fait, j'ai des erreurs de compilations:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    
    analyse.cpp(16) : error C2143: erreur de syntaxe : absence de ';' avant '<'
    analyse.cpp(16) : error C2501: 'CImgl' : Spécificateurs de type ou de classe de stockage manquants
    analyse.cpp(16) : error C2143: erreur de syntaxe : absence de ';' avant '{'
    analyse.cpp(16) : error C2447: '{' : en-tête de fonction manquant (liste formelle à l'ancien format ?)
    
    J'avoue ne pas trop comprendre

  20. #20
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2006
    Messages : 58
    Points : 74
    Points
    74
    Par défaut
    Il ne manquerait pas un petit #include "analyse.h" au début de analyse.cpp ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. Réponses: 8
    Dernier message: 25/04/2006, 16h08
  2. [PHP][Javascript] PB avec appel de fonctions externes, HELP!
    Par chaser_T dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 11/04/2006, 16h44
  3. Réponses: 6
    Dernier message: 20/11/2005, 02h53
  4. [JS] Problème déclaration de fonction
    Par glloq8 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 23/09/2005, 10h22
  5. Réponses: 13
    Dernier message: 20/06/2005, 14h13

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