[fpc-devel] Linking to C++
ppopov at tamu.edu
Tue Jan 23 17:17:58 CET 2007
Yes, this is the original purpose of interfaces in Delphi 3 and later:
reuse object code from different languages/executables through COM/DCOM or
CORBA. Both define standards for RPC (Remote procedure calling) and
passing arguments (type and size). An interface only exports member
functions (any data members will create incompatibility problems: what is
the data layout of the class, etc). Construction is by factory function,
destruction is by reference counting (so it is done on the server side and
the client does not have to do any memory management).
The implementation of CORBA is actually quite involved: the object
hieararchy to be reused is described in a separate language (IDL -
Interface Definition Language). Then, a CORBA compiler creates a thin
layer of stub objects specific to the target programming language. The
target programming language can then compile this thin layer, link at
compile time, make a DLL and link at run time, etc. So, the server and
client sides are independent and only share the object hierarchy
description (in IDL). The client language always works with the stub
object (compiled in the same langage). The stub transfers the arguments to
the CORBA executable, whih passes them to the stub on the servers side.
The server serves the result to the CORBE layer, the CORBA passes is to
the client stub. So, the results is now visible to the client.
As far as I remember, Delphi 5 and on has an IDL compiler included, and
can generate IDL code from an Object Pascal hierarchy. So in FPC one can
envision automatic generation of IDL description based on an interface
hierarchy. There might, however, already be some parsers (independent of
Borland) that do that.
A final remark. Code sharing through COM/DCOM can lead to the following
"Hello World" program:
http://www.ffzg.hr/infosl/fun/HelloWorld.htm (see the master programmer
On Tue, 23 Jan 2007 05:56:09 -0600, Michael Schnell <mschnell at lumino.de>
> Thanks for the clarifying statement, Peter
> I's obvious that linking Object Pascal and C++ in that way is not
> OTOH, is interfaces not invented for object based inter-language
> communication ?
> So an interface based DLL layer, converting the C++ API of the OS to
> interfaces FP could use, might be a more decent way to go that to go
> back to pure C.
> fpc-devel maillist - fpc-devel at lists.freepascal.org
More information about the fpc-devel