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 MFC dans Appli C


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 24
    Par défaut DLL MFC dans Appli C
    Bonjour

    J'ai une application en C qui est de type: Utilise les bibliothèques Windows standard (donc non MFC).

    J'ai une DLL MFC avec une boite de dialogue.

    Je souhaite utilser cette DLL dans mon appli.

    Que suggerez-vous?
    ===================================
    Voici ce que je tente de faire.

    Dans ma Dll:
    ------------
    Class CWinApp et CDialog

    je declare une fonction exportable qui instancient la CDialog.
    Settings projet: _USRDLL

    ifdef _USRDLL
    #define IMPEXP __declspec(dllexport)
    #else
    #define IMPEXP __declspec(dllimport)
    #endif

    IMPEXP int FonctionDll(void)
    {
    Traitement;
    }

    Dans mon Exe:
    --------------
    typedef int (*PFONCTION)(void);

    HINSTANCE hInstance;
    PFONCTION pFctDll;

    hInstance= LoadLibrary(PathDll); ==> hInstance !=0
    pFctDll= (PFONCTION)GetProcAddress (hInstance,"FonctionDll");

    Probleme:
    ---------
    GetProcAddress me retourne un pointeur null (ERROR_PROC_NOT_FOUND), et je n'arrive pas à comprendre pourquoi.

    Un probleme dans les settings de mes projets?
    de déclaration?
    Que faut-il faire avec le fichier lib généré?

  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
    Ajoute extern "C" devant la déclaration de ta fonction exportée, ça permettra de normaliser le symbole exporté. Si ça ne marche toujours pas tu peux vérifier avec je ne sais plus quel outil que le symbole "FonctionDll" est bien exporté par ta DLL.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 24
    Par défaut
    J'ai trouvé.
    Je n'avais pas ajouté les fonctions dans le fichier .def de ma DLL.

    Concernant extern "C" , j'avais déjà essayé mais:
    Compil DLL: OK
    Compill Exe: error C2059: erreur de syntaxe*: 'chaîne'
    sur la ligne:
    extern "C" IMPEXP int FonctionDll(void);

    Que penses-tu de mon choix de facon générale?

    Merci

  4. #4
    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
    Si tu utilises la macro IMPEXP tu n'as normalement pas besoin de fichier .def (et inversement).

    Pour ce qui est de l'erreur, extern "C" n'est valide qu'en C++, pas en C.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 24
    Par défaut
    "normalement", je sais mais la je n'ai pas d'explication. Peut être un pb de settings dans le projet pour mettre à jour automatiquement le fichier def.

    Appli en C donc normal pour l'extern "C".

    Encore merci
    mastergoddot

  6. #6
    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
    Peut être un pb de settings dans le projet pour mettre à jour automatiquement le fichier def
    C'est à toi de le maintenir à jour, l'EDI ne peut pas savoir quelles fonctions tu comptes exporter.

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

Discussions similaires

  1. Débogage d'une dll MFC dans un projet c#
    Par 3aychoucha dans le forum C#
    Réponses: 0
    Dernier message: 27/05/2013, 12h56
  2. Dll c++ natif dans appli .Net - Perte de pointeur
    Par jerome_t dans le forum C++/CLI
    Réponses: 10
    Dernier message: 31/05/2007, 08h26
  3. variable globale dans une dll MFC
    Par loup_precaire dans le forum MFC
    Réponses: 4
    Dernier message: 12/09/2006, 11h22
  4. Réponses: 6
    Dernier message: 20/10/2005, 21h36
  5. Réponses: 15
    Dernier message: 22/03/2005, 14h45

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