Имеется dll, написанная на Delphi. Её требуется использовать в программе на С++. При вызове функции, полученной из dll через LoadLibrary/GetProccAddress, появляется ошибка следующего вида: The value of ESP was not properly saved across a function call. Причём при использовании этой библиотеки в программе на C# (с использованием атрибута [DllImport]) никаких проблем не возникает.
Что здесь можно сделать? Я так понимаю, дело в разных call convention у С++ и Delphi. Может быть, есть способ явным образом указать это?
Здравствуйте, borobaner, Вы писали:
B>Имеется dll, написанная на Delphi. Её требуется использовать в программе на С++.
B>...
B> Я так понимаю, дело в разных call convention у С++ и Delphi. Может быть, есть способ явным образом указать это?
Вот пример в MSDN:
http://msdn.microsoft.com/en-us/library/ms686944(VS.85).aspx
Вместо
typedef int (__cdecl *MYPROC)(LPWSTR);
Видимо нужно указать прототип нужной функции с нужным call convention, для Delphi вроде как __stdcall.
Здравствуйте, Wasilij, Вы писали:
W>W>typedef int (__cdecl *MYPROC)(LPWSTR);
W>
W>Видимо нужно указать прототип нужной функции с нужным call convention, для Delphi вроде как __stdcall.
Спасибо, это сработало.