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 :

Probleme de compilation C -> C++


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 213
    Points : 58
    Points
    58
    Par défaut Probleme de compilation C -> C++
    Salut

    j'ai un petit probleme, j'ai un pgm avec une extension .C qui fonctionne tres bien ss VC++ 6.0 et qd je copie le même pgm avec une extesion .CPP, j'obtiens une errerur du genre:

    Code:
    Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast


    Il y a til un moyen pour resoudre ce probleme.

    Ce n'est peut etre pas le bon forum mais j'ai déja posté sur celui de Visual C++ et je n'ai pu resoudre mon probleme.

    Voila le bout de code posant probleme:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    int capt(int argc, char **argv)
    {
     
    argv="sauvegarde";
     
    /* Open the dump file */
    dumpfile = pcap_dump_open(adhandle, argv);
     
    * Retrieve the packets */
    while((res = pcap_next_ex( adhandle, &header, &pkt_data)) >= 0)
     
    {	
    /* save the packet on the dump file */
    pcap_dump(dumpfile, header, pkt_data);

  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 : 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
    Alors indique la ligne et tout le reste de ce que le compilateur te dit, ça nous aidera...
    Bon, déjà une erreur qui n'aurait jamais dû passer, on ne fait pas de argv = "une chaîne". argv est un char**, pas un char*.

  3. #3
    Membre éprouvé Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Points : 933
    Points
    933
    Par défaut
    Sur le principe du transtypage, http://c.developpez.com/faq/cpp/?pag...s#DIVERS_casts.

    Ton compilateur a du t'indiquer quel est le transtypage qui pose problème. En l'occurrence, tu devras sans doute passer par un reinterpret_cast, qui est un cast "non sécurisé" disant au compilateur : je sais que je transforme un type X en un type Y qui n'a rien à voir, mais je suis sûr que ça va passer alors ne me casse pas les couilles. Ou, en langage plus châtié :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    X* px = new X();
    Y* py = reinterpret_cast< Y* >( px );

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 213
    Points : 58
    Points
    58
    Par défaut
    Voila tt le message d erreur........

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    capture.cpp
    D:\C++\PGM\nouvel essai\Capture\capture.cpp(125) : error C2440: '=' : cannot convert from 'char [11]' to 'char ** '
            Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
    D:\C++\PGM\nouvel essai\Capture\capture.cpp(128) : error C2664: 'pcap_dump_open' : cannot convert parameter 2 from 'char ** ' to 'const char *'
            Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
    D:\C++\PGM\nouvel essai\Capture\capture.cpp(135) : error C2664: 'pcap_dump' : cannot convert parameter 1 from 'struct pcap_dumper *' to 'unsigned char *'
            Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
    D:\C++\PGM\nouvel essai\Capture\capture.cpp(150) : warning C4018: '<' : signed/unsigned mismatch
    Error executing cl.exe.
    Creating browse info file...
    Pourquoi ce code qd l extension du fichier est .C????

    jE SS UN PEU PERDU

  5. #5
    Membre éprouvé Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Points : 933
    Points
    933
    Par défaut
    D'accord avec Miles : les deux premières erreurs ne devraient pas passer, même en C pur.
    char** != char*
    char** != char[n] !!

    Les deux dernières erreurs sont plutôt des warnings, qui peuvent être passés sous silence en C. En C++, le contrôle de type est plus sévère (c'est une sécurité). Le mieux est de les traiter eux aussi.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 213
    Points : 58
    Points
    58
    Par défaut
    Ok Merci C résolu

    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
    int capt_save(int argc, char **argv)
    {
     
    *argv ="sauvegarde";
     
    /* Open the dump file */
    dumpfile = pcap_dump_open(reinterpret_cast<pcap_t *> (adhandle),reinterpret_cast<const char *> (*argv));
     
    /* Retrieve the packets */
    while((res = pcap_next_ex(adhandle, &header, &pkt_data)) >= 0)
     
    {	
    /* save the packet on the dump file */
    pcap_dump(reinterpret_cast<u_char *>(dumpfile), header, pkt_data);
    if(res == 0)

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

Discussions similaires

  1. [API][Cup] problem niveau compilation
    Par KoLziG dans le forum Général Java
    Réponses: 1
    Dernier message: 02/01/2005, 19h30
  2. [JSP & TAGLIB] Probleme de compilation
    Par GesMo dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 17/05/2004, 15h03
  3. Probleme de Compilation de la STL
    Par stoluup dans le forum MFC
    Réponses: 3
    Dernier message: 05/05/2004, 17h25
  4. [TP]Probleme de compilation sous TP7
    Par yffick dans le forum Turbo Pascal
    Réponses: 7
    Dernier message: 18/12/2003, 20h32
  5. Problemes de compilation avec g++ sous linux
    Par Selimmel dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 19/09/2003, 13h43

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