Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вызвать функцию exe из dll


petvv ©   (2011-08-29 09:59:00) 

Собственно сабж, как ???

Ф-ю dll из exe понятно, а наоборот ?


petvv   (2011-08-29 10:49:00) [1]

в натуре дибил

про***
вот это
ACOS:= TPCSCCard_ACOS.Create(nil);


Dimka Maslov   (2011-08-29 10:44:00) [2]

Что такое ACOS? Глобальная переменная? А кто её в dll инициализировать будет?


petvv   (2011-08-29 10:38:00) [3]

Может быть это и ошибка проектирования.

Проблема вот в чём.
Есть функция:
function UpdateReadersList : Boolean;
var
 psa : PSafeArray;
 i, ReadersCount : Integer;
 Readers : BSTRArray;
 ArrayData : pointer;
 s:String;
begin
 Result:=False;
 try
   psa := Info.ListReaders;
   SafeArrayGetUBound(psa,1,ReadersCount);
   SafeArrayAccessData( psa, ArrayData );
   Readers := BSTRArray(ArrayData);
   if ReadersCount<>0 then
     begin
       sReader:=Readers[0];
       ACOS.ConnectionReader := sReader; *****************
       Capture.InitializeCapture;
       Monitoring.InitializeMonitoring;
       Result:=True;
     end;
   SafeArrayDestroy(psa);
 except
 on E: EOleSysError do
   Result:=False;
 on E: Exception do
   begin
   Result:=False;  <<<<<<<<<
   s:=E.Message;
   end;
 end;
end;

Когда пишу сею функцию в ехе всё пучком фунциклирует, а когда ставлю её в dll в строке помеченной ***************** вываливаемся с AV в строку <<<<<<<<<
Где логика? Или у меня руки кривые.


Inovet   (2011-08-29 10:28:00) [4]

Перекрёстные вызовы exe<->dll - сорее всего ошибка проектирования.


petvv   (2011-08-29 10:13:00) [5]

Если не трудно, можно небольшой примерчик. Я только разбираюсь.


Dimka Maslov   (2011-08-29 10:06:00) [6]

Поскольку dll и exe структурно одно и тоже, в exe тоже могут быть экспортируемые функции. И пользоваться GetProcAddress тоже не запрещено. hInstance exeшника определяется как GetModuleHandle(nil)


Наверх

Титульная страница Поиск, карта сайта Написать письмо