Bonjour,
mon programme de chargement de dll plante mais je ne vois pas pourquoi.
Voici le code :

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
 
#include <stdio.h>
#include <windows.h>
 
typedef int (__stdcall *MYDLLFUNC)(int, int);
 
int main()
{
	HMODULE	hmod;
	MYDLLFUNC dllfunc;
 
	hmod = LoadLibrary(TEXT("myDll.dll"));
	if (hmod)
		printf("LoadLibrary sucess\n");
	else
		printf("LoadLibrary failure\n");
	dllfunc = (MYDLLFUNC)GetProcAddress(hmod,"addition");
	if (dllfunc)
	{
		int res = dllfunc(15, 12);
		printf("res = %d\n", res);
	}
	if (hmod)
		FreeLibrary(hmod);
	getchar();
	return 0;
}
et le code de la 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
 
#include "stdafx.h"
#include "windows.h"
 
BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
					 )
{
    return TRUE;
}
 
extern "C" __declspec(dllexport) int addition(int a,int b)
{
	return a+b;
}
Il plante sur cette ligne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
 int res = dllfunc(15, 12);
L'erreur : "Run-time check failure #0 - The value of ESP was not properly saved across a function call ..."

Merci pour votre aide.