The value of ESP was not properly saved by across a function call. This is usaully
a result of calling a function declared with one calling convention with a function
pointer declared with a different calling convention.
Здравствуйте romzes, Вы писали:
R>Здравствуйте,
R>Есть ф-я которая, получает указатель на строку
R>void _stdcall str_to(char *sStr) R>{ R> char sTmp[4];
R> strncpy(sTmp, sStr, 2); R> sTmp[2] = 0;
R> sStr +=3; R> strncpy(sTmp, sStr, 2); R> sTmp[2] = 0; R>
R> sStr +=3; R> strncpy(sTmp, sStr, 4); R> sTmp[4] = 0; R>}
R>После вызова этой ф-и из DLL, получаю диалог
R>Debug error!
R>The value of ESP was not properly saved by across a function call. This is usaully R>a result of calling a function declared with one calling convention with a function R>pointer declared with a different calling convention.
R>В чем проблема, для ф-й везде использую stdcall?
Здравствуйте romzes, Вы писали:
R>void _stdcall str_to(char *sStr) R>{ R> char sTmp[4];
<...> R> sTmp[4] = 0; R>}
<...> R>The value of ESP was not properly saved by across a function call.
R>В чем проблема, для ф-й везде использую stdcall?
В данном случае догадка компилятора не оправдалась. Дело в строке `sTmp[4] = 0'. В массиве у тебя всего 4 элемента, а ты пишешь за пределы массива — в пятый.
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен