[fpc-devel] Linking to C++
Den Jean
Den.Jean at telenet.be
Mon Jan 22 22:02:38 CET 2007
On Monday 22 January 2007 20:17, Felipe Monteiro de Carvalho wrote:
> Hello,
>
> Now, I utilized dllview software I created and saw that cpplib exports
> this function: _ZN4User3SumEii
>
IIRC C++ compiler/platform dependant.
So do not use this to be compiler independant
GCC even changed its name mangling in between versions.
> Then, I created a simple pascal software to call that function:
>
> program loadcpp;
>
> {$mode objfpc}{$H+}
> One possible problem is C++ multiple inheritance. I would propose
> that, to start with, just disconsider it.
>
AFAIK the class that inherits from multiple classes, is actually
just several classes with several vtables. To be able to
use it from pascal, the self pointer in
function User_Sum(Self: Pointer; a, b: cint): cint; cdecl; external
should be different depending on which vtable you want to call.
http://www.freepascal.org/wiki/index.php/Qt4_binding#C.2B.2B_Multiple_inheritance
implementation of QWidget_to_QPaintDevice:
QPaintDeviceH QWidget_to_QPaintDevice(QWidgetH handle)
{
return (QPaintDeviceH)(QPaintDevice *)(QWidget *)handle;
}
the typecast (QPaintDevice *) turns the number (QWidget *)handle into another
number, pointing to another vtable.
But again this is compiler/version dependant reading the following:
http://gcc.gnu.org/ml/gcc-patches/2000-01/msg00620.html
regards,
Den Jean
More information about the fpc-devel
mailing list