Bonjour à tous,

J'ai un problème à s'arracher les cheveux. Voici du code qui compose ma dll (de test) :

Dll.cpp :
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
#include <Windows.h>

#include "main.h"


BOOL DLL_EXPORT Exe(int i){

	int a = i;

	return TRUE;
}


BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
					 )
{
	switch (ul_reason_for_call)
	{
	case DLL_PROCESS_ATTACH:
	case DLL_THREAD_ATTACH:
	case DLL_THREAD_DETACH:
	case DLL_PROCESS_DETACH:
		break;
	}
	return TRUE;
}
main.h

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
#define BUILD_DLL

#ifdef BUILD_DLL
#define DLL_EXPORT __declspec(dllexport)
#else
#define DLL_EXPORT __declspec(dllimport)
#endif


#ifdef __cplusplus
extern "C"
{
#endif

	BOOL DLL_EXPORT Exe(int i);


#ifdef __cplusplus
}
#endif
Je compile ce code sous VS 2015 community avec aussi un programme de test qui fait tout bêtement un LoadLibraryEx("Dll.dll",NULL,0);

code complet de l'application:
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
#include <Windows.h>
#include <stdio.h>


int main(int argc, char* argv[])
{


	HMODULE hmodule;

	hmodule = LoadLibraryEx("Dll.dll", NULL, 0);

	if (hmodule == NULL)
	{
		printf("Fail : %d", GetLastError());
	}
	else
		printf("Loaded");

	int i;
	scanf("%d", &i);

	return 0;
}

Test sous windows 8.1 : le résultat est bien loaded, pas de soucis.
Test sous une VM windows 10 : Erreur code 126 (module could not be found).

Le même code, compilé sous Code::blocks dernière version (GCC)
Test sous 8.1 : tout roule le résultat est loaded
Test sous windows 10 : tout roule , c'est aussi loaded

O_o

Heeeeeeelp Du coup je m'oriente vers une différence d'option de compilation mais pour le moment je n'ai rien. Une idée ? je deviens fou.

Pour info sous VS pour virer toutes dépendances à des fichiers quelconques , je compile avec les options suivantes :

- Pas de precompiled header
- Multi thread Dll
- Multi bytes char set
- Use standard windows library
- platform toolset : Visual Studio 2015 - Windows XP (v140_xp)

Les options sous code::blocks sont celles par défault

(je n'ai pas touché aux autres options).

Merci d'avance pour vos idées.