[Lazarus] "Running" a library
Juha Manninen
juha.manninen62 at gmail.com
Sat Sep 15 09:40:38 CEST 2012
On Sat, Sep 15, 2012 at 12:47 AM, Mark Morgan Lloyd
<markMLl.lazarus at telemetry.co.uk> 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?
Ok, true, the compiler COULD support it but currently it does not.
>> Once it works well then you can make a dynamic library, but it still
>> needs some extra testing.
>> For example dynamic strings cannot be used across the calls,
>
> Works here, subject to explicit use of cmem.
IIRC the published API from a shared library cannot use normal dynamic
pascal strings. You must use PChar.
>> GUI component usage is limited etc.
>
> Works here as far as I've tested (i.e. merging menus from a shared library
> into the main program, using dialog(ue)s defined in the shared library and
> so on).
I have not put GUI components into libraries myself but there are bug
reports that show problems.
http://bugs.freepascal.org/view.php?id=18624
http://bugs.freepascal.org/view.php?id=15126
http://bugs.freepascal.org/view.php?id=7181
http://bugs.freepascal.org/view.php?id=7182
http://bugs.freepascal.org/view.php?id=1866
>From leledumbo:
> Ehm... FPC can't create static libraries... anymore :)
Is it so? I forgot that but linking with compiled unit files is almost
the same thing.
Now suppose the compiler could create a library which can be run as a program.
What is a benefit compared to a separate program using the same code?
There will be 2 binaries but for testing purposes that is OK.
In any case you must also test the final shared library as a library
before sending it to users.
Regards,
Juha
More information about the Lazarus
mailing list