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

--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to