ошибка при вызове ф-ии из длл
От: kardt  
Дата: 24.04.04 20:33
Оценка:
Есть баг:
The instruction at "0x011484e8" referenced memory at "0x00000000".The memory could not be "written".

также dll, написанная на Delphi, из которой должны вызываться функции в MFC приложении

на примере одной ф-ии
в делфи: function qpw_connection_open(ServerName: PChar; var Connection: Integer):
Integer; stdcall; external 'qpw5api.dll';


ф-ю dll в хедере определяю так:

typedef int (*QPW_SERV_CONN)(LPSTR ServerName, int Connection);
#define QPW_SERV_CONN_FCN "qpw_connection_open"

затем в OnInitDialog() пытаюсь вызвать

hInst = LoadLibrary(findData.cFileName);
TRACE2("*** LoadLibrary on '%s' %s\n", findData.cFileName, (NULL != hInst ? _T("succeeded") : _T("failed")));

if (hInst)
{
QPW_SERV_CONN pfnCommApiDllInfo = (QPW_SERV_CONN)::GetProcAddress(hInst, QPW_SERV_CONN_FCN);
TRACE2("*** GetProcAddress for '%s' %s\n", QPW_SERV_CONN_FCN, (NULL != pfnCommApiDllInfo ? _T("succeeded") : _T("failed")));
if (pfnCommApiDllInfo)
{
/*кстати, если pfnCommApiDllInfo не 0 то по имени все-таки вернулся нужный адрес?*/
char *ServerName="localhost:20200";
int Connection=0,n=0;
n=pfnCommApiDllInfo(ServerName,Connection);

в чем м б причина ошибки..
Re: ошибка при вызове ф-ии из длл
От: Patalog Россия  
Дата: 26.04.04 08:09
Оценка:
Здравствуйте, kardt, Вы писали:

[]

Может стоит явно указать calling conversion в typedef'е?
По умолчанию же вроде как __cdecl, а ф-я дельфовой dll наверняка хочет __stdcall.
Почетный кавалер ордена Совка.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.