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 :

[dll] Compiler une dll � partir de sources Linux


Sujet :

MFC

  1. #1
    Membre exp�riment�
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 893
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 48
    Localisation : France, Seine Saint Denis (�le de France)

    Informations professionnelles :
    Activit� : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 893
    Par d�faut [dll] Compiler une dll � partir de sources Linux
    Bonjour

    Mon probl�me fait suite � un pr�c�dent thread du forum C++. En effet, je porte actuellement un code de librairie C++ venant de Linux vers Windows en utilisant Visual C++ Express 2005.
    Je pr�cise que sous Linux, j'utilise g++ et un makefile, la compilation se passe sans erreurs ni warnings et que l'�dition de liens est tr�s correcte.
    En revanche sous Visual C++, c'est autre chose. En effet, apr�s avoir r�solu les probl�mes de syntaxes, mon code compile sans erreurs ni warnings. L'ennui vient de l'�dition de liens. Je me prend des erreurs telles celles-ci :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    1>moncode.obj : error LNK2005: "public: __thiscall TSetSeq::TSetSeq(void)" (??0TSetSeq@@QAE@XZ) already defined in TSetSeq.obj
    1>moncode.obj : error LNK2005: "public: __thiscall TSetSeq::~TSetSeq(void)" (??1TSetSeq@@QAE@XZ) already defined in TSetSeq.obj
    Pouvez-vous m'aider � r�soudre ce probl�me ?
    Merci d'avance.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne r�pond � aucune question technique par MP.

  2. #2
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    salut,
    a priori tu n'as pas du utiliser des ifdef anti-inclusion voir faq:
    http://c.developpez.com/faq/vc/?page=IDE#PbWithHeaders
    avec vc2005 on peut utiliser un #pragma once � la place
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    // header.h 
    #pragma once

  3. #3
    Membre exp�riment�
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 893
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 48
    Localisation : France, Seine Saint Denis (�le de France)

    Informations professionnelles :
    Activit� : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 893
    Par d�faut
    Hello farscape

    Merci de ta r�ponse, mais j'avais d�j� inclus les ifdef :
    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
     
    #ifndef _TSETSEQ_H_
    #define _TSETSEQ_H_
     
    #include <vector>
    #include <string>
     
    #include <math.h>
    //#include <cstdlib>
     
    #include "TSeq.h"
    class TScoMat;
    class TBox;
     
     
    /**
     * class TSetSeq
     * 
     * This class defines a sequence set
     */
    class TSetSeq
    {
    //Blasblas
    } ;
     
    #endif
    Et malgr� �a, j'ai toujours mes erreurs au linkage.
    De plus, o� doit-on mettre le #pragma once ?
    Merci d'avance de tes r�ponses ainsi qu'aux autres forumeurs.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne r�pond � aucune question technique par MP.

  4. #4
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    re,
    alors si ce n'est pas les includes c'est que tes classes sont d�finies deux fois .
    tu as v�rifi� les sources : TSetSeq.obj et moncode.obj ?


  5. #5
    Membre �m�rite
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    D�tails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Par d�faut
    De plus, o� doit-on mettre le #pragma once ?
    A mettre au d�but du *.h, mais comme Farscape le dit, il y a des doublons de d�finitions. Il faut scruter le code et particuli�rement tes includes.

  6. #6
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    une possibilit� d'erreur possible :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    class TSetSeq
    {
    TSetSeq(){} // definit dans le .h 
    ~TSetSeq(){}
    };
    et dans le .cpp:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    TSetSeq::TSetSeq() // redefinit dans le .cpp.
    {
     
    }
    TSetSeq:: ~TSetSeq()
    {
     
    }

  7. #7
    Membre Expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Par d�faut
    je crois que c'est l'erreur qu'il souhaitait corriger lol

  8. #8
    Membre exp�riment�
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 893
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 48
    Localisation : France, Seine Saint Denis (�le de France)

    Informations professionnelles :
    Activit� : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 893
    Par d�faut
    Pardon, mais je ne vois toujours pas l'erreur . Voici un extrait de mon header :
    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
     
    class TSetSeq
    {
    private:  
     
       /**Number of sequences to store in the set**/
       unsigned long int NumSeq;
       /**Maximum value of sequences to store in the set**/
       unsigned long int MaxNumSeq;
       /**Pointer to a sequence**/
       TSeq::PTSeq Seq;
     
    public:
     
       /**A vector a sequence pointers**/
       typedef std::vector<TSetSeq> PTSetSeq;
     
       /**Constructor**/
       TSetSeq();
       /**Destructor**/
       ~TSetSeq();
    };
    et voici le code c++ :
    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
     
    #include "TSetSeq.h"
     
    TSetSeq::TSetSeq()
    {
      Init();
    }
     
    TSetSeq::~TSetSeq()
    {
      Free();
    }
     
    void TSetSeq::Init()
    {
       NumSeq=0;   
       MaxNumSeq=0;
    }
     
    void TSetSeq::Free()
    {
       Seq.resize(0);
       Init();   
    }
    Je ne vois vraiment pas o� peut �tre mon erreur.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne r�pond � aucune question technique par MP.

  9. #9
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    �a correspond au source TSetSeq.ccp ?
    et dans le source moncode.cpp il doit y avoir une reference au constructeur et au destructeur de cette classe ..

  10. #10
    Membre exp�riment�
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 893
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 48
    Localisation : France, Seine Saint Denis (�le de France)

    Informations professionnelles :
    Activit� : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 893
    Par d�faut
    Bon, j'ai trouv�, apparemment, c'�tait des inclusions de headers en trop que j'avais.
    Bon, encore 7 erreurs de linkages � r�soudre et on pourra s'en aller

    @++ et merci de vos indications.
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne r�pond � aucune question technique par MP.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 1
    Dernier message: 05/03/2012, 11h39
  2. Linker avec une DLL compil�e avec MSVC6
    Par Neilos dans le forum C++Builder
    R�ponses: 4
    Dernier message: 26/08/2006, 21h46
  3. utiliser une dll dans une dll
    Par anthonycosson dans le forum MFC
    R�ponses: 2
    Dernier message: 09/05/2006, 21h42
  4. [VB] COmment compiler une dll dans un exe (zlib.dll)
    Par Khrysby dans le forum VB 6 et ant�rieur
    R�ponses: 3
    Dernier message: 01/11/2005, 12h10
  5. [DLL] utiliser une DLL a partir d' une DLL et un .def
    Par venomelektro dans le forum MFC
    R�ponses: 9
    Dernier message: 07/12/2004, 14h01

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