[fpc-devel] VMT compatibility
Alexey Barkovoy
clootie at ixbt.com
Sat Jan 29 22:41:03 CET 2005
Hi,
I where any chance to see FreePascal generating VMT's for classes that is more
compatible with C++ / TurboPascal / Delphi one?
To explain mine question: recently I've been porting Delphi framework
interfacing to C++ code to FPC and finded out that althrow Delphi VMT layout is
compatible to C++ one, FPC is not. Let's see two examples: (1) is C++ and (2) is
pascal one. In Delphi and C++ DoSomething method is located at ZERO offtet in
VMT (i.e. PPointer(Self)^ == address of DoSomething). In FreePascal DoSomething
is located with offset of 80 bytes (i.e. @PPChar(Self)^[80] == address of
DoSomething).
(1)
typedef class IMyClass
{
public:
__cdecl virtual void DoSomething()=0;
} *lpMyClass;
(2)
type
IMyClass = class(TObject)
public
procedure DoSomething; virtual; cdecl; abstract;
end;
Regards,
Alexey Barkovoy
More information about the fpc-devel
mailing list