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

C++/CLI Discussion :

Echec du chargement des resources d'une Dll MFC � partir d'une Dll regular en C++/CLI


Sujet :

C++/CLI

  1. #1
    Futur Membre du Club
    Homme Profil pro
    D�veloppeur informatique et build master
    Inscrit en
    Novembre 2004
    Messages
    2
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique et build master
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2
    Par d�faut Echec du chargement des resources d'une Dll MFC � partir d'une Dll regular en C++/CLI
    Bonjour,

    Ma solution est compos�e de:
    - 1 executable cod� en C# qui fait r�f�rence �:
    - 1 Dll "regular" cod�e en C++/CLI qui fait r�f�rence �:
    - 1 Dll d'extension poss�dant des boites de dialogues et autres resources MFC

    L'appel et l'affichage des boites de dialogues sous Visual 2003 fonctionnait bien. Mais depuis le passage � Visual 2005 et � l'option \CLR (au lieu de \CLR old syntaxe) pour la compil de Dll regular, impossible d'afficher les boites de dialogue (AfxGetResourceHandle retourne NULL).

    Je suis reparti de 0 en cr�ant une nouvelle Dll "regular" qui appelle une nouvelle Dll d'extension et toujours le m�me probl�me.

    Le code de la dllMain de la Dll d'extension est le suivant (classique):
    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
    36
    37
    38
    39
    40
     
    static AFX_EXTENSION_MODULE DllExtensionResourceDLL = { NULL, NULL };
    extern "C" int APIENTRY
    DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
    {
    	// Remove this if you use lpReserved
    	UNREFERENCED_PARAMETER(lpReserved);
     
    	if (dwReason == DLL_PROCESS_ATTACH)
    	{
    		TRACE0("DllExtensionResource.DLL Initializing!\n");
     
    		// Extension DLL one-time initialization
    		if (!AfxInitExtensionModule(DllExtensionResourceDLL, hInstance))
    			return 0;
     
    		// Insert this DLL into the resource chain
    		// NOTE: If this Extension DLL is being implicitly linked to by
    		//  an MFC Regular DLL (such as an ActiveX Control)
    		//  instead of an MFC application, then you will want to
    		//  remove this line from DllMain and put it in a separate
    		//  function exported from this Extension DLL.  The Regular DLL
    		//  that uses this Extension DLL should then explicitly call that
    		//  function to initialize this Extension DLL.  Otherwise,
    		//  the CDynLinkLibrary object will not be attached to the
    		//  Regular DLL's resource chain, and serious problems will
    		//  result.
     
    		new CDynLinkLibrary(DllExtensionResourceDLL);
     
    	}
    	else if (dwReason == DLL_PROCESS_DETACH)
    	{
    		TRACE0("DllExtensionResource.DLL Terminating!\n");
     
    		// Terminate the library before destructors are called
    		AfxTermExtensionModule(DllExtensionResourceDLL);
    	}
    	return 1;   // ok
    }
    J'ai vu sur certains forums qu'il fallait que la "regular" Dll initialise elle m�me les ressources de la Dll d'extension. J'ai donc, comme le conseillait l'article, ins�r� le code d'initialisation des ressources dans une m�thode que j'ai export�e et qui est appell�e dans InitInstance de la "regular" Dll:
    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
    Dans Dll extension:
    extern "C" MY_EXPORT void WINAPI InitYourExtDLL()
    {
    	// Create a new CDynLinkLibrary for this app.
    	TRACE0("DllExtensionResource.DLL Initializing RESOURCES!\n");
    	new CDynLinkLibrary(DllExtensionResourceDLL);
    }
    
    Dans Dll regular:
    BOOL CDllRegularApp::InitInstance()
    {
    	CWinApp::InitInstance();
    
    	InitYourExtDLL();
    
    	return TRUE;
    }
    => L'initialisation est bien appell�e, mais toujours le m�me r�sulat: pas d'affichage de boites de dialogue.
    J'ai �galement essayer de rajouter le code
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    void DllRegularWrapper::OuvreBoite()
    {
    	AFX_MANAGE_STATE(AfxGetStaticModuleState());
     
    	AfficheDlgDllExtension();
    }
    avant l'appel de mes boites de dialogue (dans la Dll regular) ... sans succ�s.

    Ca fait d�j� plusieurs jours que je suis sur ce probl�me. Est ce que quelqu'un pourrait il m'aider?

    Merci par avance

  2. #2
    Futur Membre du Club
    Homme Profil pro
    D�veloppeur informatique et build master
    Inscrit en
    Novembre 2004
    Messages
    2
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique et build master
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2
    Par d�faut
    J'ai finalement cr�� une Dll mixte contenant � la fois le code de la Dll Regular (C++/CLI) et celui de la Dll d'extension (C++ natif (dont les resources)).
    Le projet (de la Dll mixte) poss�dant l'option "No Common Language runtime support" alors que les fichiers .cpp contenant du code C++/CLI poss�dant l'option CLR.

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

Discussions similaires

  1. R�ponses: 2
    Dernier message: 13/01/2016, 13h08
  2. R�ponses: 4
    Dernier message: 10/10/2010, 11h46
  3. R�ponses: 2
    Dernier message: 05/03/2010, 14h15
  4. R�ponses: 1
    Dernier message: 25/11/2009, 10h24
  5. [Eclipse + Jogl] Echec de chargement des librairies natives
    Par dabeuliou dans le forum Eclipse Java
    R�ponses: 3
    Dernier message: 18/11/2007, 05h52

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