[fpc-pascal]linking pascal objects/units into C

Fernando Lozano fsl at centroin.com.br
Mon Jun 18 13:24:13 CEST 2001


Hi Oliver,


> We have a pretty old pascal project (delphi 1 on win95 -- already
> ported) and we need to interface it with various script languages
> (python, perl, etc.). So we need to link the pascal units to some
> C interfacing code for those script languages.


This is not hard at all, as FPC can use C calling conventions and can
gennerate standard linux dynamic libraries (*.so). You just have to be
carefull about different data types supported by each language, and how
to provide the "external" declarations for C and Pascal. Hint: never use
pascal Strings, use pchar and ansistrings. I guess integers and real are
compatible.

Other hint: of your library use standard pascal procedures (like
writeln) you'll have to link the C programs against the pascal system
unit, and I don't know how to do that. But if you rewrite everything to
use Unix system calls (the unit linux) everything'll be fine. (please
anyone tell me if I am wrong).

I am sending a very simple sample where I build a dynamic library
(lteste.pas) and call it both from a pascal program (teste2.pas) and a C
program (teste3.pas). I'm sorry, the comments are on portuguese, but
they are so simple you'll understand anyway.


[]s, Fernando Lozano
-------------- next part --------------
#include <stdio.h>


extern int porcento (int p, int t);

int main (int argc, char* argv[])
{
    printf ("20%% de 50 vale: %d\n", porcento (20, 50));
}

-------------- next part --------------
A non-text attachment was scrubbed...
Name: teste2.pas
Type: application/x-unknown-content-type-pas_auto_file
Size: 155 bytes
Desc: not available
URL: <http://lists.freepascal.org/pipermail/fpc-pascal/attachments/20010618/e69b1a3f/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: lteste.pas
Type: application/x-unknown-content-type-pas_auto_file
Size: 151 bytes
Desc: not available
URL: <http://lists.freepascal.org/pipermail/fpc-pascal/attachments/20010618/e69b1a3f/attachment-0001.bin>


More information about the fpc-pascal mailing list