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++Builder Discussion :

[Liens externe] Comment utiliser extern


Sujet :

C++Builder

  1. #1
    Membre averti Avatar de max44410
    Étudiant
    Inscrit en
    Juin 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2003
    Messages : 426
    Points : 301
    Points
    301
    Par défaut [Liens externe] Comment utiliser extern
    Bonjour,

    Voila, j'ai besoin d'utiliser la commande extern pour que le comilateur ne fasse pas d'erreur lors de la compilation, car je ne peux pas inclure le fichier .h de mon objet, donc je voulais utiliser extern :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    extern nom_class nom_objet
    mais ca ne fonctione pas, des erreur lors de la compilation, il dit qu'il n'y a pas de constructeur définie pour cet objet alors que si.

    j'en ai parlé avec un amis qui m'a dit qu'il pensait qu'il y avais une syntaxe particulière pour utiliser extern avec borland.

    Merci

  2. #2
    Membre averti Avatar de max44410
    Étudiant
    Inscrit en
    Juin 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2003
    Messages : 426
    Points : 301
    Points
    301
    Par défaut
    pour info voila mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    ...
     
    extern Thread_CrbAmplitude Thread_TraitementCrb
     
    //---------------------------------------------------------------------------------------------------------
    //---------------------------------------------------------------------------------------------------------
     
    sample::sample() : Thread_TraitementCrb(true)
    {
     
    ....
    et l'erreur c'est :

    "Erreur de syntaxe de déclaration", a la ligne correspondant a mon lien extern.

    Voila je ne sais pas d'ou ca vient ... merci

    EDIT :

    j'ai aussi essayer comme ca :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    ...
     
    extern PACKAGE Thread_CrbAmplitude Thread_TraitementCrb
     
    //---------------------------------------------------------------------------------------------------------
    //---------------------------------------------------------------------------------------------------------
     
    sample::sample() : Thread_TraitementCrb(true)
    {
     
    ....
    et la c'est à la ligne du dessous lors de la aconstruction de mon objet que ca m'affiche la meme erreur :

    "Erreur de syntaxe de déclaration"

  3. #3
    Membre averti Avatar de max44410
    Étudiant
    Inscrit en
    Juin 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2003
    Messages : 426
    Points : 301
    Points
    301
    Par défaut
    Personne n'a d'info sur ce genre de chose.. j'ai rien trouvé dans la FAQ, et n'y dans le forum.

    S'il vous manque des infos n'hésitez pas a demander, je suis un peu blocké.

    Merci encore @+

  4. #4
    Membre averti Avatar de max44410
    Étudiant
    Inscrit en
    Juin 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2003
    Messages : 426
    Points : 301
    Points
    301
    Par défaut
    Bon voila j'ai deux classe :

    - sample
    - Thread_CrbAmplitude

    voici le debut de sample.h :

    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
     
    #ifndef sampleH
    #define sampleH
    #include <windows.h>
    #include <vcl.h>
    #include "mmsystem.h"
     
    #define INP_BUFFER_SIZE 16384
    #define NUM_BUFFER 2
     
    class Thread_CrbAmplitude;
     
    class sample
    {
    public :
    HWAVEIN                   hWaveIn;
    HWAVEOUT                  hWaveOut;
    ...
    et voici le debut de sample.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
     
    #pragma hdrstop
    #include "sample.h"
    #include "mmsystem.h"
    #include <vcl.h>
    #include "main.h"
    #include "formatWave.h"
     
    extern PACKAGE Thread_CrbAmplitude Thread_TraitementCrb;
     
    //---------------------------------------------------------------------------------------------------------
    //---------------------------------------------------------------------------------------------------------
     
    sample::sample() : Thread_TraitementCrb(true)
    {
    int i;
    // Allocation de mémoire pour les wave header
    for (i=0 ; i < NUM_BUFFER ; i++)
    pWaveHdr[i] = new WAVEHDR;
     
    //Thread_CrbAmplitude = new Thread_TraitementCrb(true) ;
     
    // Allocation de m&moire pour la sauvegarde des buffers
    pSaveBuffer = (PBYTE) new PBYTE[1];
    pNewBuffer = (PBYTE) new PBYTE[1];
     
    dwDataLength=0;
     
    // création des Event de synchronisation de la thread
    hEvtQuitterThread = CreateEventA(NULL, TRUE, FALSE, "");
    hEvtSynchro = CreateEventA(NULL, FALSE, FALSE,"");
     
    Thread_TraitementCrb.Resume();
    }

    je ne peux pas faire de #include "Thread_CrbAmplitude.cpp", car j'inclu déja "sample.cpp" dans "Thread_CrbAmplitude.h"


    lors de la compilation, j'ai ce message d'erreur :

    [C++ Erreur] sample.cpp(34): E2294 Structure nécessaire sur le côté gauche de . ou .*
    [C++ Erreur] sample.cpp(172): E2294 Structure nécessaire sur le côté gauche de . ou .*
    la ligne 34 correspond à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Thread_TraitementCrb.Resume();
    Voila je ne sais pas du tout comment me dépatouiller, j'ai essayé pas mal de chose, les erreurs de compilation change, mais en aucun cas le programme fonctionne.

    Merci de me donner un coup de main.

    PS : j'ai aussi essayé de faire ca dans le fichier de définition de sample :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ....
    sample() : Thread_CrbAmplitude(bool);
    ....
    Mais la l'erreur de compilation, c'est :

    [C++ Erreur] sample.cpp(15): E2171 Le corps a déjà été défini pour la fonction 'sample::sample()'
    [C++ Erreur] sample.cpp(15): E2034 Impossible de convertir 'bool' en 'Thread_CrbAmplitude *'
    [C++ Erreur] sample.cpp(34): E2294 Structure nécessaire sur le côté gauche de . ou .*
    [C++ Erreur] sample.cpp(172): E2294 Structure nécessaire sur le côté gauche de . ou .*
    Bref, je suis un peux paumé ...

  5. #5
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 374
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 374
    Points : 1 759
    Points
    1 759
    Par défaut
    Salut !

    Ce ne serait pas une histoire de pointeur pour le PACKAGE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    extern PACKAGE Thread_CrbAmplitude *Thread_TraitementCrb;
    et non pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    extern PACKAGE Thread_CrbAmplitude Thread_TraitementCrb;
    A plus !

  6. #6
    Membre averti Avatar de max44410
    Étudiant
    Inscrit en
    Juin 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2003
    Messages : 426
    Points : 301
    Points
    301
    Par défaut
    Voila je viens de changer comme tu me la dis Henderson et j'ai une nouvelle erreur, que j'avais déja eu avant :

    [C++ Erreur] sample.cpp(15): E2034 Impossible de convertir 'bool' en 'Thread_CrbAmplitude *'

    sur cette ligne là (sample.cpp):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    extern PACKAGE ...
    sample::sample() : Thread_TraitementCrb(true)
    {
    ...
    et puis bien sur les meme erreurs :

    [C++ Erreur] sample.cpp(34): E2294 Structure nécessaire sur le côté gauche de . ou .*
    [C++ Erreur] sample.cpp(172): E2294 Structure nécessaire sur le côté gauche de . ou .*
    Yavais surement de ca ... mais c'est pas tout ...

  7. #7
    Membre averti Avatar de max44410
    Étudiant
    Inscrit en
    Juin 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2003
    Messages : 426
    Points : 301
    Points
    301
    Par défaut
    c'est bon j'ai trouvé .... voila comme c'est un pointeur on ne peut pas faire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sample::sample() : Thread_TraitementCrb(true)
    on est obligé de faire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    sample::sample()
    {
    Thread_TraitementCrb = new Thread_CrbAmplitude(true);
    ...
    Merci tout le monde ...

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 22/10/2009, 17h25
  2. Réponses: 5
    Dernier message: 19/12/2008, 18h54
  3. Réponses: 1
    Dernier message: 23/05/2008, 15h18
  4. Réponses: 0
    Dernier message: 31/03/2008, 11h36
  5. [Outils][VS2005] Comment utiliser une librairie externe ?
    Par Djangogol dans le forum EDI/Outils
    Réponses: 4
    Dernier message: 25/05/2006, 11h12

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