[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