Re[3]: 0xc0000008 при подключении процедуры из DLL
От: DarkMaster Украина http://www.bdslib.at.ua
Дата: 15.04.08 08:56
Оценка: +1
Здравствуйте, _petrovich_, Вы писали:

__>mqic32.dll на компе в единственном экземпляре.

__>Интересно вот что — если делать так:
__>// procedure MQDISC(......);cdecl;external 'mqic32.dll';
__> Handle := LoadLibrary('mqic32.DLL');

1) Лучше грузить по абсолютному пути. Затем проверять Handle...
DLLHanle:=LoadLibrary('D:\.....\mqic32.dll');
if DLLHandle<>0 then ......
2) Инициализировать и вызывать вот как (соответственно каждый шаг котролируем)...

type
   TMQDISK=procedure (....); cdecl;
var FMQDISK:TMQDISK;   
 //  ....
   FMQDISK:=nil;
   @FMQDISK:=GetProcAddress(DLLHandle,'MQDISK');  // внимательно! можем точку входа не найти из-за несовпадения имени ф-ции.
 //   ....

if @FMQDISK<>nil then FMQDISK(....);
2) MQDISK () точно cdecl а не stdcall? Возможная причина вашего AV — несовпадения модели вызова в ДЛЛ и приложении.
WBR, Dmitry Beloshistov AKA [-=BDS=-]
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.