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 :

AfxGetInstanceHandle et DLL


Sujet :

MFC

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 18
    Points : 11
    Points
    11
    Par défaut AfxGetInstanceHandle et DLL
    Hello,

    Je suis en train de developer une application qui utilise une DLL. l'application et la DLL sont deux projets du meme workspace. La dll fournit a l'exe la couche reseau (socket).

    Ma classe interface de la DLL est declaré avec AFX_EXT_CLASS et les settings avec _AFXDLL et _EXTDLL.

    Au debut tous semble ok, en debug je passe effectivement dans les methodes de ma DLL appelé par l'exe.

    Pour etre plus clair voici un peu de code de la DLL:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    bool CInterface::Start(int nPort)
    {
    	m_pListeningSocket = new CListeningSocket(this);
    	if(m_pListeningSocket->Create(nPort+700))
    	{
    		// .....	
    	}
    	return false;
    }
    CListeningSocket est derivée de CSocket, et create n'est pas surchargée. mon pb c'est que ca pete dans create, plus precisement sur AfxGetInstanceHandle() qui est appelé dans les profondeurs des MFC (poutant j'ai bien ajouté USRDLL dans les settings de l'exe et de la dll cf MSDN).

    qq'un a t'il une idée ???

  2. #2
    Membre habitué

    Inscrit en
    Mars 2002
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 83
    Points : 125
    Points
    125
    Par défaut Re
    Y a sûrement un problème d'instance aux vus de tes dires.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    //		extern "C" BOOL PASCAL EXPORT ExportedFunction()
    //		{
    //			AFX_MANAGE_STATE(AfxGetStaticModuleState());
    //			// corps de fonction normal ici
    //		}

    AFX_MANAGE_STATE est une macro qui permet de switcher automatiquement entre l'instance de ton appli et celle de la dll.

    Donc quand ta dll fait appel à une resource : IL faut regarder ou est se trouve soit dans l'exe, soit dans la dll.

    Dans ce cas utilises : AfxSetResourceHandle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    BOOL CMyApp::InitInstance()
    {
       //Default Application Wizard code.
       HINSTANCE hRes = NULL;
       hRes= LoadLibrary("ResourceD.dll");
       if(hRes)
          AfxSetResourceHandle(hRes);
       //Rest of wizard code
       return CWinApp::InitInstance();
    }
    Mais n'oublis pas de remetre l'instance de l'exe lorseque ton programme utilise le code contenu dans l'exe et non plus dans la dll. Sinon tu auras le même pb.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    dsl pour l'inertie de ma reponse...

    Je viens tous juste d'essayer AFX_MANAGE_STATE et ca ne plante plus , mais bon, je sais pas si ca va suffir : (i hope ).

    mais en tous cas je te remercie. 8)

    et je te tiens au courant dans ce sujet

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

Discussions similaires

  1. [CR] Infos sur l'utilisation de dll
    Par step dans le forum SAP Crystal Reports
    Réponses: 11
    Dernier message: 09/08/2002, 12h35
  2. Declarer une dll Delphi ?
    Par DelphiCool dans le forum C++Builder
    Réponses: 2
    Dernier message: 26/07/2002, 11h07
  3. Débug de DLL
    Par Bayard dans le forum C++Builder
    Réponses: 3
    Dernier message: 22/07/2002, 16h08
  4. Equivalent à ExeName pour une DLL
    Par Smortex dans le forum Langage
    Réponses: 7
    Dernier message: 16/07/2002, 22h07
  5. Réponses: 2
    Dernier message: 21/03/2002, 00h01

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