[Surnaturel] Une fonction qui marche en débug, pas en release
	
	
		Ben voilà, tout est dans le titre. J'ai une fonction qui marche en mode debug, pas en mode release. La voilà:
	Code:
	
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:
	
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 ?