Пишу самую элементарную DLL:
- Код: Выделить всё
- library p1;
 {$mode objfpc}{$H+}
 uses
 Classes
 { add your units here };
 procedure Insert(i: cardinal); cdecl;
 var F:TextFile;
 begin
 AssignFile(F, 'c:\insert.txt');
 Rewrite(F);
 Writeln(F, 'done');
 Closefile(F);
 end;
 procedure PH2(dllparam : longint);
 var F:TextFile;
 begin
 AssignFile(F, 'c:\Dll_Thread_Attach_Hook.txt');
 Rewrite(F);
 Writeln(F, 'done');
 Closefile(F);
 end;
 function PH(dllparam : longint) : longbool;
 var F:TextFile;
 begin
 AssignFile(F, 'c:\Dll_Process_Attach_Hook.txt');
 Rewrite(F);
 Writeln(F, 'done');
 Closefile(F);
 Result:=true;
 end;
 exports Insert;
 begin
 Dll_Process_Attach_Hook:=@PH;
 Dll_Thread_Attach_Hook:=@PH2;
 end.
Далее вызываю функцию Insert после динамической линковки в тестовой проге. Без проблем создается файл insert.txt, что говорит о том, что функция Insert в DLL отработала. А вот файлы Dll_Process_Attach_Hook.txt и Dll_Thread_Attach_Hook.txt не создаются, что говорит о том, что соответствующие события мне отловить не удалось.
В чем моя ошибка? Как мне все-таки поймать момент прилинковки мой DLL к процессу?
Использую FPC 2.0.2. Компилю DLL вообще без опций:
fpc.exe моя_dll.lpr
Windows HP Home.



