[Lazarus] "Running" a library

Sven Barth pascaldragon at googlemail.com
Sat Sep 15 11:55:09 CEST 2012


On 15.09.2012 11:48, Mark Morgan Lloyd wrote:
> 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?
>

No, I'm not experienced enough with ELF, though I want to change that 
somewhen in the future (but not now :P )

Regards,
Sven




More information about the Lazarus mailing list