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

MFC Discussion :

Communication entre workspace


Sujet :

MFC

  1. #1
    Membre confirmé
    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
    Par défaut Communication entre workspace
    Petit probleme...

    j'ai un 1er workspace dans lequel j'appelle une fonction présente dans un 2nd workspace.

    J'ai donc inclus le .h de la fonction appelée,
    J'ai lié les workspaces par Project->Dependencies

    J'appelle ma fonction et j'obtiens comme erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SnifferDlg.obj : error LNK2001: unresolved external symbol "void __cdecl lecture(void)" (?lecture@@YAXXZ)
    Debug/Sniffer.exe : fatal error LNK1120: 1 unresolved externals
    Comment faire pour pouvoir utiliser des fonctions définies dans d'autres workspaces?

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 393
    Par défaut
    Rajoute l'option "Link library dependencies" dans les options du linker.
    Si elle n'est pas disponible, rajoute manuellement le .lib dans les additional libraries.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre confirmé
    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
    Par défaut
    Dans un premier temps je tiens à faire un emodification sur le titre de cette discution...
    Ce n'est pas Communication entre workspace
    mais plutot Communication entre projet dans un même Workspace

    Voila je reprends...

    j'ai un projet Win 32 application et un autre MFC AppWizzard.

    J'essai à partir de mon projet MFC de lancer des fonctions de mon projet Win32.

    Voila mon .cpp de mon projet Win32

    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
    namespace appeldecompactage {
    int lecture()
    {
    xt_simech::init();
    return true;
    }
    int decompactage()
    {
    char trame[30] = {238,242,155,91,4,160,184,8,195,88,92,4,58,84,16,19,159,105,168,174,41,84,173,3};
    xt_simech::displayMessage(trame);
    return true;
    }
    
    //int main(int argc, char **argv)
    extern "C" int main(int argc, char **argv) ///qui me permet de supprimer l'err: LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
    
    {
    lecture();
    decompactage();
    return 0;
    }
    }
    Voila mon .h de mon projet Win32

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #ifndef APPEL_H
    #define APPEL_H
    namespace appeldecompactage {
    extern int lecture (char *path);
    extern int decompactge ();
    //------------------------------------------------------------------------------------------------
    } // Fin namespace
    #endif
    //------------------------------------------------------------------------------------------------
    // Fin de fichier
    //------------------------------------------------------------------------------------------------
    De mon projet MFC, j'appelle la fonction "lecture" comme suit, apres avoir inclus le .h associé et crée une dépendances entre les deux...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    appeldecompactage::lecture();
    Et j'obtiens:

    error LNK2001: unresolved external symbol "int __cdecl appeldecompactage::lecture(void)" (?lecture@appeldecompactage@@YAHXZ)
    Si qqun pouvait m'ouvrir les yeux ca sera sympas!!!

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 393
    Par défaut
    Tu crées deux EXEs et tu t'attends à ce qu'un des deux utilise l'autre comme une simple bibliothèque --> Echec.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre confirmé
    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
    Par défaut
    il faut donc que je crée un .lib de mon projet où se trouve ma fonction lecture?

    je dois avoir qu'un seul executable qui puise dans une lib les fonctions qu'il souhaite utiliser.

    Ok je vais regarder comment faire ca!

  6. #6
    Membre confirmé
    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
    Par défaut
    Dois je créer un projet Win32 Static Lib

  7. #7
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 393
    Par défaut
    static ou dynamic.

    Généralement, on fait dynamic (DLL). Ce que j'ai dit était pour une DLL.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  8. #8
    Membre confirmé
    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
    Par défaut
    Ok merci pour cette ouverture d 'esprit....

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

Discussions similaires

  1. communication entre deux executables
    Par semenzato dans le forum MFC
    Réponses: 8
    Dernier message: 13/04/2005, 22h19
  2. Lecture standard et communication entre processus!
    Par Tartar Ukid dans le forum C++Builder
    Réponses: 5
    Dernier message: 05/07/2003, 16h37
  3. Communication entre processus
    Par markopolo dans le forum C++Builder
    Réponses: 2
    Dernier message: 26/06/2003, 16h21
  4. Réponses: 5
    Dernier message: 25/03/2003, 19h43
  5. communication entre programmes
    Par jérôme dans le forum C
    Réponses: 12
    Dernier message: 16/04/2002, 08h05

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