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