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 :

Link DLL


Sujet :

MFC

  1. #1
    Membre confirm� Avatar de lenouvo
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    252
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 252
    Par d�faut Link DLL
    bonjour,
    voil� je veux utiliser une dll et j'ai l'erreur super connue :
    error LNK2001: unresolved external symbol
    j'ai pourtant d�fini mon .def dans project->Settings->Link->Object/Libray Module et apr�s j'inclus un .h pour utiliser les fonctions de la dll.
    j'ai aussi test� de cette mani�re :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
     
    #pragma comment(lib,"MALIB.LIB")
     
    extern "C" unsigned long  __cdecl rq_init_dll (char FAR *lpFile);
    extern "C" void  __cdecl rq_end_dll ();
    et l� ca marche (tant que j'enleve l'include de mon .h sinon il me met cette erreur
    error C2732: linkage specification contradicts earlier specification for 'rq_init_dll'
    ) mais j'ai j'ai tellement de fonctions � importer que je me vois mal les declarer une par une...
    quelqu'un a t il une id�e ?

  2. #2
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par d�faut
    salut,
    est-ce que dans le .h, les prototypes sont d�finis avec

  3. #3
    Membre �prouv�
    Inscrit en
    Avril 2004
    Messages
    122
    D�tails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 122
    Par d�faut
    Salut, ce n'est pas ton .def que tu dois mettre dans les sttings de ton projet, c'est le .lib de ta dll.

  4. #4
    Membre confirm� Avatar de lenouvo
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    252
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 252
    Par d�faut
    non ils ne sont pas d�finis avec
    extern "C"
    ca viendrait d ca?

    sinon d�sol� oui c'est bien le .lib que j'ai mis pas le .def

  5. #5
    Membre �prouv�
    Inscrit en
    Avril 2004
    Messages
    122
    D�tails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 122
    Par d�faut
    Ce que je fais g�n�ralement quand je cr�e une DLL exportant des fonctions ou des classes, c'est une fichier de d�finition d'export de la DLL, ce fichier sert � d�finir le symbole utilis� par ta DLL et par ton programme appelant pour exporter et importer tes fonctions.

    Exemple :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    #ifdef MA_DLL_EXPORTS
    #define MA_DLL_API __declspec(dllexport)
    #else
    #define MA_DLL_API __declspec(dllimport)
    #endif
    Chacune de tes classes et fonctions export�e doit �tre pr�fix�e de cette d�finition pour �tre export�e et import�e.

    Le symbole MA_DLL_EXPORTS �tant d�fini dans ta DLL, tes fonctions seront export�es. Ce symbole n'�tant pas d�fini dans ton programme utilisant ta DLL, tes fonctions seront import�es.

    En esp�rant que ce t'aide.

  6. #6
    Membre confirm� Avatar de lenouvo
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    252
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 252
    Par d�faut
    oui, mais ce n'est pas ma dll et j' n'ai acc�s qu'au .h et a la lib.
    sinon il ne faudrait pas que j'ajoute ca dans mon .h :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #ifdef __cplusplus 
    extern "C" 
    { 
    #endif 
     
     //declaration des fonctions
     
    #ifdef __cplusplus 
    } 
    #endif
    on dirait que ca fonctionne

  7. #7
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par d�faut
    c'est effectivement la bonne m�thode

  8. #8
    Membre confirm� Avatar de lenouvo
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    252
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 252
    Par d�faut
    ok, merci bien nico

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

Discussions similaires

  1. Erreur de LINK DLL
    Par ZeNoob dans le forum Visual C++
    R�ponses: 4
    Dernier message: 22/05/2013, 12h08
  2. Erreur de link dll
    Par Tyfox dans le forum C++
    R�ponses: 11
    Dernier message: 24/06/2008, 10h20
  3. Probl�me de compilation ( links, DLL )
    Par dekron dans le forum Ogre
    R�ponses: 6
    Dernier message: 07/02/2007, 20h13
  4. probleme link dll
    Par Kokocha dans le forum C++
    R�ponses: 13
    Dernier message: 13/10/2006, 13h00
  5. [DLL/classe template] probl�me de link
    Par Bob.Killer dans le forum C++
    R�ponses: 7
    Dernier message: 31/08/2005, 18h56

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