Загрузка dll
От: borobaner  
Дата: 10.08.09 19:59
Оценка:
Имеется dll, написанная на Delphi. Её требуется использовать в программе на С++. При вызове функции, полученной из dll через LoadLibrary/GetProccAddress, появляется ошибка следующего вида: The value of ESP was not properly saved across a function call. Причём при использовании этой библиотеки в программе на C# (с использованием атрибута [DllImport]) никаких проблем не возникает.
Что здесь можно сделать? Я так понимаю, дело в разных call convention у С++ и Delphi. Может быть, есть способ явным образом указать это?
Re: Загрузка dll
От: Wasilij  
Дата: 10.08.09 20:33
Оценка: 1 (1)
Здравствуйте, 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.
Re[2]: Загрузка dll
От: borobaner  
Дата: 10.08.09 20:43
Оценка:
Здравствуйте, Wasilij, Вы писали:

W>
W>typedef int (__cdecl *MYPROC)(LPWSTR); 
W>


W>Видимо нужно указать прототип нужной функции с нужным call convention, для Delphi вроде как __stdcall.


Спасибо, это сработало.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.