[Lazarus] "Running" a library

Mark Morgan Lloyd markMLl.lazarus at telemetry.co.uk
Sat Sep 15 11:48:20 CEST 2012


Sven Barth wrote:

>> /Why/ can't a library be run standalone? We're already at the position
>> that an executable can decide whether it's been invoked from a shell or
>> the GUI and behave as appropriate, so why can't it decide whether it's
>> being run as a program or being initialised as a library?
> 
> A library and an application have different entry point signatures. Take 
> Windows for example. There the entry point for applications is 
> "procedure EntryPoint; stdcall;" while for DLLs it is "procedure 
> EntryPoint(aHinstance: PtrInt; aDLLReason: Word; aDLLParam: Pointer); 
> stdcall;". Additionally the entry point of a DLL is called multiple 
> times (once the process loads the library, every time a new thread is 
> created and destroyed and once the process unloads the library) while 
> the entry point of an application is only called once. Also AFAIK 
> Windows does not let you run binaries that are flagged as "DLL". That's 
> the reason why there is a program called "rundll32" ;) [though it 
> expects an exported function with a certain signature...]

Thanks for that, interesting and potentially useful. Can you comment on 
the situation for ELF-based OSes such as Linux?

-- 
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk

[Opinions above are the author's, not those of his employers or colleagues]




More information about the Lazarus mailing list