есть функция (в dll) вида
boll func(TCHAR *var1);
как правильно ее вызвать?
теоретически в дельфи оно имеет вид
function func(var1: PChar) : boolean;
и вызывается просто
sVar1=PChar('dfsfsf');
func(sVar)
а как ее вызвать из visual c++?
у меня постоянно сваливается с ошибкой
Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention.
да, предполагается, что var1 функция будет менять.
Здравствуйте, bipbip, Вы писали:
B>B>Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention.
B>
Мне кажется, тут дело не в TCHAR, а в спецификаторе вызова функции. Насколько мне известно, паскаль и си используют разную схему (последовательность) занесения аргументов функции в стек и возвращения значения. Копать в строну __cdecl __stdcall и иже с ними. По умолчанию в си используется один из этих спецификаторов неявно, и это не всегда приемлемо.
У меня например такая ошибка выпала однажды, когда пытался импортировать функцию из dll, не указывая спецификатор вызова, а он оказался по умолчанию не таким как нужно.
Здравствуйте, bipbip, Вы писали:
B>есть функция (в dll) вида
B>B>boll func(TCHAR *var1);
B>
B>как правильно ее вызвать?
B>теоретически в дельфи оно имеет вид
ТАК ПОПРОБУЙ:
B>B>function func(var1: PChar) : boolean; cdecl;
B>
B>и вызывается просто
Здравствуйте, bipbip, Вы писали:
B>огромное человеческое спасибо! помогло!
А оценочку поставить?