[Lazarus] "Running" a library
Mark Morgan Lloyd
markMLl.lazarus at telemetry.co.uk
Sat Sep 15 10:52:10 CEST 2012
Juha Manninen wrote:
>>> 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.
I'm definitely passing strings between a .so and main program, both
written using Lazarus. So e.g. a frontend program can call these from
the backend:
function LoadConfiguration(base: string= ''): boolean;
function BackendAboutText: string;
and the backend can call these from the fontend:
procedure FrontendSetButtonLegendSafe(index: integer; const legend: string);
procedure FrontendOutputWriteSafe(const str: unicodestring; fg: TColor=
clBlack; bg: TColor= clDefault);
>>> 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 need to correct an inaccuracy: I should have said displaying
messageboxes rather than using dialog(ue)s.
> 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
Noted, and obviously I defer to your experience and direct involvement.
But it is possible to define the structure of displayable objects in a
shared library, and then to copy them when needed.
--
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