[fpc-devel] Building a static library

Sergio Flores relfos at gmail.com
Tue Aug 26 22:47:54 CEST 2014


Let's start this email by saying that I know perfectly that FPC does not
support static libraries, I read all I could find about it.
However most reasons talk about that there would be problems if someone
tried to use two fpc static libs together because of duplicated symbols.

In my case I want to create a iPhone static lib to be used by objective-c
and C++ users. Since in this special case there will be one and only one
lib written in pascal, I though this would make it possible.

I saw that my own iOS projects that were based on templates worked by
compiling a static libFPC.a that would be then called by Objective-C.

So I did create my own static library by gathering all .o files from FPC
into a .a file. I wrote a .h header and added the static lib into a Xcode
Objective-C project.
Ok, it compiles and links correctly. It calls some of the pascal functions
correctly. But.. then it later crashes in one of the pascal functions.

Note that I have a lib_init() function called from C that is used to
initialize the pascal library, and it calls this undocumented fpc function:

procedure internal_initializeunits(); external name 'FPC_INITIALIZEUNITS';

This function from what I understood it calls all units initialization
sections, right?
Still, I'm missing something... the libFPC.a compiled in xcode templates
works fine with Objective-C, but also it does not share any memory back or
forward.

This seems to be some problem with memory allocation, since only calling
any function that creates pascal strings or classes seem to crash the app.
Any clue?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-devel/attachments/20140826/0d1a27c9/attachment.html>


More information about the fpc-devel mailing list