Re: проблема при подключении dll
От: Аноним  
Дата: 23.04.07 11:02
Оценка: 3 (1)
Почитай про calling convention — тип вызова функции
У тебя CALLBACK является макросом, который скорей всего разворачивается в модификатор типа вызова __stdcall.
А функция в DLL откомпилирована c другим модификатор типа вызова (по умолчанию __cdecl).
Re: проблема при подключении dll
От: Аноним  
Дата: 23.04.07 11:05
Оценка: 2 (1)
PS
сделай модификаторы типа вызова одинаковыми (например убери CALLBACK)
и будет тебе щастье
проблема при подключении dll
От: Аноним  
Дата: 23.04.07 09:09
Оценка:
Привет всем!
В общем пытаюсь сейчас сделать dll которую бы я мог динамически подключать. При попытке передачи в функцию dll параметра вылетает:
"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."

нажимаю кнопку пропустить — отрабатывается нормально(в смысле вызываетя функция и функция отрабатывает правильно)... При подключении функции без параметров проблем не возникает...
Привожу код:
работающий.
в длл
extern "C" __declspec(dllexport) int fun1()
{
    return 34;
}

в программе
typedef int (CALLBACK* LPFNDLLFUNC1)(void);
...
HINSTANCE hDLL; 
LPFNDLLFUNC1 lpfnDllFunc1; 
hDLL = LoadLibrary("sample dll.dll");
lpfnDllFunc1 = (LPFNDLLFUNC1)GetProcAddress(hDLL,"fun1");
int i = lpfnDllFunc1();
...

Выдающий ошибку
extern "C" __declspec(dllexport) int fun1(int i)
{
    return 34+i;
}

в программе
typedef int (CALLBACK* LPFNDLLFUNC1)(int);
...
HINSTANCE hDLL; 
LPFNDLLFUNC1 lpfnDllFunc1; 
hDLL = LoadLibrary("sample dll.dll");
lpfnDllFunc1 = (LPFNDLLFUNC1)GetProcAddress(hDLL,"fun1");
int i = lpfnDllFunc1(5);
...


Зарание спасибо!
З.Ы. Буду благодарен за ссылки на документы где хорошо описана работа длл.
Re: проблема при подключении dll
От: BoberPlus  
Дата: 23.04.07 09:59
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Привет всем!

А>В общем пытаюсь сейчас сделать dll которую бы я мог динамически подключать. При попытке передачи в функцию dll параметра вылетает:
А>"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
."

Что еще не понятно ?
Re[2]: проблема при подключении dll
От: InTO  
Дата: 23.04.07 11:32
Оценка:
большое спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.