Witam, od kilku tygodni męczę się z takim problemem, mianowicie zrobiłem sobie dll, w której funkcje pisane są w asemblerze. W trybie debug, wszystko pięknie działa, natomiast w trybie release (kompiluje się) po uruchomieniu programu w momencie wywołania funkcji z asemblera, do wskaznika dodaje liczbę i po tej operacji, wrzucenie czegokolwiek na stos powoduje błąd zapisu (dostęp do komórki pamięci zabroniony). Tutaj jest kod:
[code]
6E7D103C push ebp
6E7D103D mov ebp,esp
6E7D103F add esp,0FFFEFED4h
6E7D1045 push 0
[/code]
Ostatnia operacja powoduje ww. błąd
Tak wywołuję funkcję z dll:
[code]extern "C" int _stdcall Pakowanie (unsigned short * x, int y); [/code]
Próbowałem wywoływać funkcję dynamicznie jak i statycznie, w obu wypadkach było to samo.
Program uruchamiam na 64 bitowym win 7 i VS 2008.