[fpc-pascal] Help needed with interfacing to C-object-files.

Marc Santhoff M.Santhoff at t-online.de
Wed Mar 9 00:34:21 CET 2005


Am Di, den 08.03.2005 schrieb Koenraad Lelong um 21:51:
> Marc Santhoff wrote:
> > Am Mo, den 07.03.2005 schrieb Koenraad Lelong um 22:36:
> > 
> >>Hi,
> >>I'm trying to make an interface to a kind of library, but I'm stuck. Any 
> >>pointers are welcome.
> >>There is a C-header file, but this is common for a number of C-modules. 
> >>If I translate (h2pas) this file, and use it, the linker tries to find 
> >>an o-file, which does not exist. Any suggestions how to handle this ?
> > 
> > 
> > You've got to compile the C files to .o (gcc -c thesource.c) and then
> > link them into your pascal unit ({$L thesource.o}). This way it should
> > work, I'm using some C stuff like that.
> > 
> > HTH,
> > Marc
> Let me explain more : the header file is used in at least five 
> source-files, so compiling gives (at least) five .o files, but none with 
> the name of the header-file.
> I was thinking that splitting that header-file in smaller files, each 
> for its own source could do the trick, but I'll have to check this 
> carefully. I had hoped for another suggestion.
> Anyway, thanks for the response.

Hm, I don't know, how the translated header looks in pascal, but if it's
a complete unit itself you could try to {$L xxx} all resulting .o files
in that unit. So any declared function and type should be found ... the
other thing would be, if the sources from the 1-wire stuff form a
dynamic library, then you simply have to tell the linker to pull this
lib (.so) in

fpc -k-l<thelibraryname without the.so-ending> ...

should work and does for me, too. Or it needs an additional
"-k-L/the/path/to/1-wire-lib". The only thing in your sources is to put
the translated header in the uses clause.

HTH,
Marc






More information about the fpc-pascal mailing list