[fpc-devel] Linking to C++

Daniël Mantione daniel.mantione at freepascal.org
Mon Jan 22 22:04:50 CET 2007



Op Mon, 22 Jan 2007, schreef Felipe Monteiro de Carvalho:

> On 1/22/07, Dani=EBl Mantione <daniel.mantione at freepascal.org> wrote:
> > Of course, you can import a class like you did, and even automate it, I
> > don't see a problem with adding C++ mangling. But, you cannot use class
> > syntax, since classes are fundamentally incompatible with C++ classes.
> =

> Automating C++ mangling would already be great, but if one can=B4t use
> c++ methods inside classes, how will the name mangler know that the
> function is actually a method from a class with a given name?
> =

> And how would this be added? Extra keywords to be added to functions?
> Maybe 2 different keywords, one for cpp method name mangling and
> another for c function name mangling, so I would declare:
> =

> function User.Sum(Self: Pointer; a, b: cint): cint; cdecl; external
> 'cpplib.dll'; cpp_method_name_mandling;
> =

> On this solution we treat the C++ object as a pointer that is passed
> around, and can only be created and destroyed by imported functions.

It will have to be done like this: Treat the self pointer as some kind of =

handle. The handle is created by the constructor and destroyed by the =

destructor. Calling virtual methods is not possible, in fact OOP =

programming is not possible due to the lack of polymorphy; you will =

interface with the C++ library completely with procedural programming.

Dani=EBl


More information about the fpc-devel mailing list