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 les MFC dans une dll


Sujet :

MFC

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 164
    Points : 67
    Points
    67
    Par défaut Utiliser les MFC dans une dll
    Salut,

    Voilà, vue que je suis un peu nouveau dans le c++ et que j'ai un gros truc à faire avec j'ai décidé de scinder en 2 grosses parties. Les 2 parties marchent de leur côtés mais quand je veux les réunir benh... Je vous laisse deviner...
    Ma première partie est une "simple" DLL en vc++ qui est utilisé en tant que xpcom. Elle fonctionne sans souci.
    Ma seconde partie est une application MFC qui charge et appelle des fonctions qui sont dans une tierce dll. Elle marche sans souci.
    Maintenant, ce que je souhaite faire c'est que ma premiere partie (ma DLL xpcom) puisse jouer le rôle de mon application MFC en appelant l'autre DLL.
    Je me suis dit, suffit de mettre #include "stdafx.h" et de charger ma DLL et voilà. Bon c'était forcement trop simple... (fatal error C1083: Cannot open include file: 'stdafx.h': No such file or directory)
    J'ai cherché et j'ai trouvé qu'il fallait mettre :
    #include "afxwin.h"
    #include "afxext.h"
    #include "stdafx.h"
    dans mon .h
    Mais ça marche pas mieux, à force de chercher j'en arrive à des gros paquets d'erreurs bien étrange (LNK2005, c1010, etc.)
    J'ai essayé aussi de créer une DLL MFC et de copier les fichiers stdafx.h et cpp dans mon projet mais bon bon je suis un peu rêveur lol

    Comment je peux faire du coup pour appeller une dll depuis ma dll?
    (ma dll Xpcom est basé sur : http://developer.mozilla.org/en/docs..._Visual_Studio)

    Merci

    Simo'

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 124
    Points : 136
    Points
    136
    Par défaut
    ou as tu mis ton dossier de projet?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 164
    Points : 67
    Points
    67
    Par défaut
    Je mets mes projets sur mon second disque dur, il faut quand meme pas que je les mette dans le dossier par defaut???
    Pour l'application MFC qui appelle une dll, elle est aussi sur mon second disque dur mais elle fonctionne.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 164
    Points : 67
    Points
    67
    Par défaut
    J'ai bien avancé mais je suis encore bloqué...
    J'ai bien maintenant une DLL MFC qui me sert d'XPcom. Celle-ci charge une DLL tierce et utilise l'une de ses fonctions et en récupère la valeur de retour.
    Je fait ensuite un FreeLibrary puis c'est la catastrophe... Firefox éclate, Visual me propose un debugage mais il ne m'affiche rien de très parlant.
    Je me suis dit qua ça doit être la faute à la DLL tierce que j'ai simplifiée au maximum (ma fonction renvoit la lettre "a"...) mais non, c'est bien ma DLL MFC utilisé en XPcom qui plante...
    Voici le fichier cpp avec appel de la dll si cela peut vous aider :
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    #include "stdafx.h"
    #include "comp-impl.h"
     
    NS_IMPL_ISUPPORTS1(CSpecialThing, ISpecialThing)
     
    CSpecialThing::CSpecialThing()
    {
    	/* member initializers and constructor code */
    	mName.Assign(L"Default Name");
    }
     
    CSpecialThing::~CSpecialThing()
    {
    	/* destructor code */
    }
     
    /* long add (in long a, in long b); */
    NS_IMETHODIMP CSpecialThing::Add(PRInt32 a, PRInt32 b, PRInt32 *_retval)
    {
     
    	typedef char* (_stdcall *ProcDllPtr)(char* monString);
    	HMODULE hinstDLL=LoadLibrary((LPCSTR)"C:\\_projet\\TestDll\\DDLL.dll");
    	if (hinstDLL) {
    		ProcDllPtr ProcExportDll = (ProcDllPtr) GetProcAddress(hinstDLL, "MaFonction");
     
    		char* reponseDLL=ProcExportDll("sanctification personnel");
    		AfxMessageBox((LPCTSTR)reponseDLL,MB_OK,-2);
    	} else {
    		AfxMessageBox((LPCTSTR)"et m...",MB_OK,-2);
    	}
    	FreeLibrary((HINSTANCE)hinstDLL);
     
    	*_retval = a + b;
    	return NS_OK;
    }
    Simo'

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 164
    Points : 67
    Points
    67
    Par défaut
    Si quelqu'un a une idée ou si vous voullez un autre morceau de code du projet, n'hésitez pas.
    Sinon, vous savez pas où je pourrais trouver un forum plus dédié à XPcom et MFC? Les autres forum sur lesquels je demande conseil sont plus spécialisé dans les .so que .dll (Geckozone, mozilladev, etc.)
    Merci
    Simo'

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/05/2006, 19h45
  2. comment utiliser les fonctions d'une dll
    Par sebled dans le forum MFC
    Réponses: 3
    Dernier message: 24/02/2006, 16h59
  3. utilisation de classe dans une DLL
    Par _stef_ffff_f34 dans le forum Windows
    Réponses: 1
    Dernier message: 10/02/2006, 16h03
  4. Réponses: 7
    Dernier message: 25/11/2005, 17h11
  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