Ben voil�, tout est dans le titre. J'ai une fonction qui marche en mode debug, pas en mode release. La voil�:

Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
if (TEST() == 0x12345678) MessageBox(NULL, "Erreur", "", MB_OK);
 
unsigned long TEST(void) {
  unsigned long a;
 
  a = 0x12345678;
  _asm {
    mov a,esi
  }
 
  return a;
}
En fait, lorsqu'on regarde le code assembleur g�n�r�, le compilateur fait comme si ebp et esp �taient �gaux (ce qui n'est pas le cas):

Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
push esi
push ecx
mov [esp], 0x12345678
mov [ebp+0x00],esi
mov eax,[esp]
pop edx
pop esi
ret
Il semblerait donc que ce soit un probl�me de convention d'appel. Mais j'ai essay� de la d�clarer en pascal, stdcall, cdecl, etc... Rien n'y fait. Quelqu'un aurait-il une id�e ?