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 :

Utiliser une biblioth�que statique


Sujet :

MFC

  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    124
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 124
    Par d�faut Utiliser une biblioth�que statique
    Salut � tous,
    J'ai un gros souci ...
    En fait j'ai cr�e une librairie statique avec DevC++ (bizarrement sous Visual C++ �a compile pas correctement).
    Cette librairie contient des classes
    Maintenant je souhaiterais int�grer cette librairie dans un projet MFC pour utiliser ses fonctionnalit�s dans une interface graphique.
    La question est, comment faire pour que dans visual studio il comprenne que ce sont des classes de ma bibliothque externe que je veux utiliser ?
    J'ai fait ceci :
    - Ajouter ma librairie aux librairies d'entr�e du projet
    - Ajouter le fichier Include de ma librairie dans le projet
    Cependant il me sort des erreurs de link quand je compile ..
    Qu'ai-je oubli� ? des exportations ? comment faire ?
    Help !!!
    Merci

  2. #2
    R�dacteur
    Avatar de Laurent Gomila
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par d�faut
    Une biblioth�que statique g�n�r�e avec Dev-C++ ne sera pas compatible avec VC++. Il faut la compiler avec ce dernier.

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    124
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 124
    Par d�faut
    Ca ne change rien avec VC++ lui m�me..
    Lorsque je cr�e un projet de librairie statique dans la m�me solution que le projet MFC, et que je r�alise la m�me manip :
    - Ajouter la librairie aux librairies d'entr�e du projet MFC
    - Ajouter le fichier Include de ma librairie dans le projet MFC
    si je fais ceci avec une fonction toute simple �a marche
    si je fais ceci avec une classe il me sort des erreurs de link :
    IPIPOura error LNK2019: symbole externe non r�solu "public: __thiscall SocketConnexion::SocketConnexion(void)" (??0SocketConnexion@@QAE@XZ) r�f�renc� dans la fonction "public: void __thiscall CIPIPOuraDlg::OnBnClickedButton1(void)" (?OnBnClickedButton1@CIPIPOuraDlg@@QAEXXZ)
    IPIPOura error LNK2019: symbole externe non r�solu "public: __thiscall SocketConnexion::SocketConnexion(void)" (??0SocketConnexion@@QAE@XZ) r�f�renc� dans la fonction "bool __cdecl grow_lf70(unsigned int,unsigned int)" (?grow_lf70@@YA_NII@Z)
    Comprends pas ..

  4. #4
    Membre confirm�
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    38
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 38
    Par d�faut
    Citation Envoy� par Loulou24
    Une biblioth�que statique g�n�r�e avec Dev-C++ ne sera pas compatible avec VC++. Il faut la compiler avec ce dernier.
    En effet, lorsque tu cr�es une fonction simple au prototype C
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    extern "C" void MaFonction(void);
    Normalement tous les compilateurs C compile ta fonction en lui donnant le nom interne (symbole)
    avec un underscore devant le nom de ta fonction, c'est pour �� que �� marche.

    Par contre, en C++ (et peut-�tre plus particuli�rement en VC++), lorsque tu cr�es une fonction C++ ou une classe, les nom symboliques des fonctions/m�thodes ne respectent une d�nomination standard
    Donc une classe compil�e en Dev-C++ peut donner :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    class MaClasse
    {
       public:
       void UneMethode();
    }
    En Dev-C++ (j'invente ici des noms)
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    ?MaClasse_UneMethode_DevC
    et en Visual C
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    ??MaClasse_UneMethode_VC
    Donc ta classe compil�e porte le nom ?MaClasse_UneMethode_DevC en DevC++ par contre le VC va s'attendre � lire un nom symbolique ??MaClasse_UneMethode_VC qui n'existe pas dans ta librairie.

    Voil� pourquoi le Dev-C++ n'est pas compatible avec le VC++[/b]

  5. #5
    Membre confirm�
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    124
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 124
    Par d�faut
    Oui je connaissais le point de d�tail dont tu parles que l'on appelle aussi "decorated name"... le souci est le m�me quand on cr�e une DLL il faut utiliser un fichier def pour sp�cifier nos propres noms ...
    Mais bon ce qui est bizarre c'est que le m�me fichier source utilis� dans Visual C++ et compil� en tant que librairie statique ne fonctionne plus une fois li� ... (Link error) ...

  6. #6
    Membre confirm�
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    124
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 124
    Par d�faut
    Bon je vais clarifier un peu les choses quand m�me :
    Voil� exactement ce que j'essaye de faire :
    Au d�part je voulais cr�er un projet avec wxWidgets pour faire une appli multi plateforme... Et puis je me suis rendu compte que le rendu graphique est moyen avec cette librairie...
    Mais j'avais d�j� fait toutes les classes techniques internes avec wxWidgets et �a fonctionnait tr�s bien...
    Alors je me suis dit : bon ben je vais garder ces classes faites avec wxWidgets et faire une interface graphique avec Visual Studio en liant statiquement l'appli MFC � ma biblioth�que de classes. (quitte � refaire l'interface graphique uniquement sur chaque plateforme, pas de probl�me)
    Or probl�me, si la librairie compile tr�s bien en elle m�me, d�s lors qu'on rajoute le fichier d'include de cette m�me biblioth�que dans le projet MFC les ennuis commencent.
    Alors je m'amuse � configurer tout le projet jusqu'� ce qu'il soit adapt� � wxWidgets et apte � pouvoir compiler ... Je croyais enfin toucher au but, mais derni�re erreur :
    Un certain fichier de socket de wx ne compile pas... j'en trouve la cause apr�s 2 jours de recherche : winsock.h doit �tre inclus avant lui ...
    R�solu ? Pas encore, parce qu'en faisant �a, �a me sort une nouvelle erreur : LoadIcon not referenced in TheApp ...
    Enfin bon vous voyez le bordel que c'est pour finalement lier un pauvre truc qui contient des classes faites en wxWidgets avec un projet MFC ...
    C la mouise totale, je pense que je vais carr�ment essayer de passer par Borland C Builder ...

  7. #7
    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
    Pour exporter des classes enti�res il faut g�n�rer une DLL MFC d'extension et utiliser la macro AFX_EXT_CLASS devant le nom de tes classes

Discussions similaires

  1. Utiliser une biblioth�que statique ?
    Par divide dans le forum D�buter
    R�ponses: 1
    Dernier message: 05/12/2012, 14h25
  2. R�ponses: 15
    Dernier message: 15/03/2010, 20h01
  3. Probl�me de lien avec une biblioth�que statique
    Par streetpc dans le forum C++/CLI
    R�ponses: 2
    Dernier message: 28/10/2006, 17h38
  4. R�ponses: 2
    Dernier message: 02/05/2006, 14h34
  5. utiliser une biblioth�que....
    Par miminou dans le forum Biblioth�ques
    R�ponses: 5
    Dernier message: 18/12/2005, 20h26

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