Recent

Author Topic: FPC 3.2.2 - Generic Class's - where is the internal Data stored ?  (Read 1301 times)

paule32

  • Hero Member
  • *****
  • Posts: 645
  • One in all. But, not all in one.
Hello,
I have a Project that used EXE and DLL together.
When I use Generic Classes - where are the internal Data of RTTI and such sort of Information's stored when I use the Generic Classes in the DLL Code ?

Will this Informations go into the EXE or only in DLL or in both together ?
« Last Edit: June 29, 2025, 10:48:16 pm by paule32 »
MS-IIS - Internet Information Server, Apache, PHP/HTML/CSS, MinGW-32/64 MSys2 GNU C/C++ 13 (-stdc++20), FPC 3.2.2
A Friend in need, is a Friend indeed.

Thaddy

  • Hero Member
  • *****
  • Posts: 19147
  • Glad to be alive.
Re: FPC 3.2.2 - Generic Class's - where is the internal Data stored ?
« Reply #1 on: June 30, 2025, 09:10:33 am »
Generics are not stored at all: generics  are template replays and at compile time.
Although you may find some references to generics in the generated assembler this is not what it seems:
These are just mangled names for the specializations.
Don't confuse generics with inheritance.
You  only find specializations, not the generics themselves.
So: they are in the exe if specialized in the exe and in the dll when specialized in the dll.
They are not "generics" anymore. Again, the generic part is not stored anywhere.
As such there is no RTTI for the generics themselves and you can not specialize at runtime.
« Last Edit: June 30, 2025, 09:31:15 am by Thaddy »
objects are fine constructs. You can even initialize them with constructors.

Martin_fr

  • Administrator
  • Hero Member
  • *
  • Posts: 12345
  • Debugger - SynEdit - and more
    • wiki
Re: FPC 3.2.2 - Generic Class's - where is the internal Data stored ?
« Reply #2 on: June 30, 2025, 10:45:32 am »
I don't know, but...

As for any RTTI generated for a class (and that should be independent on that being specialized or otherwise), I would expect them in any executable file (exe and dll) that has the type included. That is: uses the unit, and probably also uses the type inside the unit (has a variable of that type)

As for accessing it... afaik on a class you access the typeinfo of the instance. The instance carries a pointer to its RTTI. So if you created the class in the main exe, then it would point to the RTTI there...



But I realized something else when you share a class between your main exe and dll.

They may not be compatible.

At some optimization level FPC does class field reordering.

If your main exe, and the dll where compiled with diff opt settings, then one may have that and the other may not. That may mean that in some cases accessing fields can go wrong.

At least that is my understanding.

Thaddy

  • Hero Member
  • *****
  • Posts: 19147
  • Glad to be alive.
Re: FPC 3.2.2 - Generic Class's - where is the internal Data stored ?
« Reply #3 on: June 30, 2025, 11:16:58 am »
As for any RTTI generated for a class (and that should be independent on that being specialized or otherwise), I would expect them in any executable file (exe and dll) that has the type included. That is: uses the unit, and probably also uses the type inside the unit (has a variable of that type)
That is correct: only for the specialized types, not the generic itself. No RTTI there.
objects are fine constructs. You can even initialize them with constructors.

paule32

  • Hero Member
  • *****
  • Posts: 645
  • One in all. But, not all in one.
Re: FPC 3.2.2 - Generic Class's - where is the internal Data stored ?
« Reply #4 on: June 30, 2025, 12:46:55 pm »
currently, I use the FPC Command Line Option -B to compile ALL NEW.

So, I have to provide the source code ?

because they are Templates and resolved at compile time ...
MS-IIS - Internet Information Server, Apache, PHP/HTML/CSS, MinGW-32/64 MSys2 GNU C/C++ 13 (-stdc++20), FPC 3.2.2
A Friend in need, is a Friend indeed.

Thaddy

  • Hero Member
  • *****
  • Posts: 19147
  • Glad to be alive.
Re: FPC 3.2.2 - Generic Class's - where is the internal Data stored ?
« Reply #5 on: June 30, 2025, 12:51:00 pm »
No. Usually not. A finished binary does not need the templates. Only the compiler needs them.
But if you want them as templates  for your own compiler you need to add a generics library and its sourcecode.
objects are fine constructs. You can even initialize them with constructors.

paule32

  • Hero Member
  • *****
  • Posts: 645
  • One in all. But, not all in one.
Re: FPC 3.2.2 - Generic Class's - where is the internal Data stored ?
« Reply #6 on: June 30, 2025, 01:07:36 pm »
I have not the skill's to codeing a real Compiler...
So, I use FPC for my own Library stuff.

it is a Partner Project: by fibodev and me.
I don't know exactly what fibo does...
But he provide me his memory manager and some other stuff that fall under the compilerproc History

When I try to Compile without -B Option I felt in trouble, that all ppu Files seems to be change her Checksum and I know that in some Pascal Sources are INCLUDES that inject .inc Files.

But I am on the spot, that when a ppu and .o File exists, I don't need compile all new.
MS-IIS - Internet Information Server, Apache, PHP/HTML/CSS, MinGW-32/64 MSys2 GNU C/C++ 13 (-stdc++20), FPC 3.2.2
A Friend in need, is a Friend indeed.

Khrys

  • Sr. Member
  • ****
  • Posts: 438
Re: FPC 3.2.2 - Generic Class's - where is the internal Data stored ?
« Reply #7 on: June 30, 2025, 01:13:04 pm »
So, I have to provide the source code ?

What are you trying to do, exactly?
Do you want to export (unspecialized) generic functions? If so, then you'll be disappointed, because that's simply not possible.

Your original question about where RTTI may be stored has already been answered by @Thaddy and @Martin_fr.

paule32

  • Hero Member
  • *****
  • Posts: 645
  • One in all. But, not all in one.
Re: FPC 3.2.2 - Generic Class's - where is the internal Data stored ?
« Reply #8 on: June 30, 2025, 01:17:02 pm »
I simply thought that the Template System is bind within the .ppu and .o Files - so I don't need to provide the Source Code of all.

But with the new Information's, I have to provide the Sources to the Template System, because they will resolve at compile time ...
MS-IIS - Internet Information Server, Apache, PHP/HTML/CSS, MinGW-32/64 MSys2 GNU C/C++ 13 (-stdc++20), FPC 3.2.2
A Friend in need, is a Friend indeed.

Martin_fr

  • Administrator
  • Hero Member
  • *
  • Posts: 12345
  • Debugger - SynEdit - and more
    • wiki
Re: FPC 3.2.2 - Generic Class's - where is the internal Data stored ?
« Reply #9 on: June 30, 2025, 01:27:19 pm »
As far as I understand....
I simply thought that the Template System is bind within the .ppu and .o Files - so I don't need to provide the Source Code of all.

But with the new Information's, I have to provide the Sources to the Template System, because they will resolve at compile time ...

The "template" is (in some form) in the ppu. That is, you can use a unit, that you only have the ppu and o file. And you can specialize a generic that came from that unit's ppu.

But in the final binary/executable (the exe, or dll, or so ...) There is no generic. The final binary only contains all the specialized classes.

In the final binary those classes (that were declared by specialize) are (should be) no different to any class that was declared directly (without generics). I.e. generics only exists until the end of compile time (a ppu is not the end of compile time / a binary/exe/dll is).

As for RTTI is should make no difference if a generic was involved or not.



Furthermore you haven't said if you do
   typeinfo(TMyClass)
or if you get the typeinfo from an instance of the class.

For other types (e.g. enum), you always get the typeinfo via: typeinfo(TMyEnum)
(well, except if you get it for the type of a property, and access it via that property).

If you use "typeinfo(typename)" then you always get typeinfo that was compiled into the SAME binary as the code that contains the statement.

If you get typeinfo from an object (the instance of a class), then you get it from the binary that created the instance (and the binary that uses the instance may not even have the type compiled into it)

paule32

  • Hero Member
  • *****
  • Posts: 645
  • One in all. But, not all in one.
Re: FPC 3.2.2 - Generic Class's - where is the internal Data stored ?
« Reply #10 on: June 30, 2025, 01:53:39 pm »
This command will fail (only .ppu and .o in one Directory)
Code: Bash  [Select][+][-]
  1. ppcrossx64.exe -dDLLIMPORT -dLANGDEU -dDLLDEBUG -n -Twin64 -FE. -Fu. -O3 -Os test.pas
  2. PPU Loading windows.ppu
  3. PPU Source: windows.pas not found
  4. Recompiling Windows, checksum changed for system.ppu
  5. windows.pas(9,1) Fatal: Can't find unit Windows used by system
  6. Fatal: Compilation aborted

This command will working well (all ppu a and pas in one Directory)
Code: Bash  [Select][+][-]
  1. ppcrossx64.exe -dDLLIMPORT -dLANGDEU -dDLLDEBUG -n -B -Twin64 -FE. -Fu. -O3 -Os test.pas
MS-IIS - Internet Information Server, Apache, PHP/HTML/CSS, MinGW-32/64 MSys2 GNU C/C++ 13 (-stdc++20), FPC 3.2.2
A Friend in need, is a Friend indeed.

Martin_fr

  • Administrator
  • Hero Member
  • *
  • Posts: 12345
  • Debugger - SynEdit - and more
    • wiki
Re: FPC 3.2.2 - Generic Class's - where is the internal Data stored ?
« Reply #11 on: June 30, 2025, 02:04:23 pm »
This command will fail (only .ppu and .o in one Directory)
Code: Bash  [Select][+][-]
  1. Recompiling Windows, checksum changed for system.ppu
  2. windows.pas(9,1) Fatal: Can't find unit Windows used by system
  3.  

That isn't really related to generics (and certainly not to RTTI).
Well, there is a bug, where this can happen, and that bug can be triggered by generics too, among other triggers....

Checksum changed simply means that the system.ppu that is currently seen by the compiler is not the same system.ppu that had been used when the "windows.ppu" was created.
Therefore the windows.ppu can not be used (with the current system.ppu) and a new windows.ppu must be compiled using the current system.ppu.

And because there is a bug, that can happen even if you haven't touched either of the 2 ppu after having them compiled the first time => and so they should be correct and they should match each other. But the compiler screwed up. That screw up can (and does sometimes) happen without generics. But it also sometimes happens when generics seem to be the trigger.


paule32

  • Hero Member
  • *****
  • Posts: 645
  • One in all. But, not all in one.
Re: FPC 3.2.2 - Generic Class's - where is the internal Data stored ?
« Reply #12 on: June 30, 2025, 02:23:11 pm »
This is my build batch File:

Code: Bash  [Select][+][-]
  1. ppcrossx64.exe -dDLLEXPORT -dLANGDEU -dDLLDEBUG -n -Twin64 -FE. -Fu. -O3 -Os system.pas
  2. ppcrossx64.exe -dDLLEXPORT -dLANGDEU -dDLLDEBUG -n -Twin64 -FE. -Fu. -O3 -Os windows.pas
  3. ppcrossx64.exe -dDLLEXPORT -dLANGDEU -dDLLDEBUG -n -Twin64 -FE. -Fu. -O3 -Os classes.pas
  4. ppcrossx64.exe -dDLLEXPORT -dLANGDEU -dDLLDEBUG -n -Twin64 -FE. -Fu. -O3 -Os dialogs.pas
  5. ppcrossx64.exe -dDLLEXPORT -dLANGDEU -dDLLDEBUG -n -Twin64 -FE. -Fu. -O3 -Os errordata.pas
  6. ppcrossx64.exe -dDLLEXPORT -dLANGDEU -dDLLDEBUG -n -Twin64 -FE. -Fu. -O3 -Os errordatadeu.pas
  7. ppcrossx64.exe -dDLLEXPORT -dLANGDEU -dDLLDEBUG -n -Twin64 -FE. -Fu. -O3 -Os errordata.pas
  8. ppcrossx64.exe -dDLLEXPORT -dLANGDEU -dDLLDEBUG -n -Twin64 -FE. -Fu. -O3 -Os exceptions.pas
  9. ppcrossx64.exe -dDLLEXPORT -dLANGDEU -dDLLDEBUG -n -Twin64 -FE. -Fu. -O3 -Os forms.pas
  10. ppcrossx64.exe -dDLLEXPORT -dLANGDEU -dDLLDEBUG -n -Twin64 -FE. -Fu. -O3 -Os fpintres.pas
  11. ppcrossx64.exe -dDLLEXPORT -dLANGDEU -dDLLDEBUG -n -Twin64 -FE. -Fu. -O3 -Os sysinit.pas
  12. ppcrossx64.exe -dDLLEXPORT -dLANGDEU -dDLLDEBUG -n -Twin64 -FE. -Fu. -O3 -Os objpas.pas
  13. ppcrossx64.exe -dDLLEXPORT -dLANGDEU -dDLLDEBUG -n -Twin64 -FE. -Fu. -O3 -Os global.pas
  14. ppcrossx64.exe -dDLLEXPORT -dLANGDEU -dDLLDEBUG -n -Twin64 -FE. -Fu. -O3 -Os locales.pas
  15. ppcrossx64.exe -dDLLEXPORT -dLANGDEU -dDLLDEBUG -n -Twin64 -FE. -Fu. -O3 -Os strutils.pas
  16. ppcrossx64.exe -dDLLEXPORT -dLANGDEU -dDLLDEBUG -n -Twin64 -FE. -Fu. -O3 -Os sysutils.pas
  17. ppcrossx64.exe -dDLLEXPORT -dLANGDEU -dDLLDEBUG -n -Twin64 -FE. -Fu. -O3 -Os xmm.pas
  18.  
  19. ppcrossx64.exe -dDLLEXPORT -dLANGDEU -dDLLDEBUG -n -Twin64 -FE. -Fu. -O3 -Os rtlunit.pas
  20. ppcrossx64.exe -dDLLEXPORT -dLANGDEU -dDLLDEBUG -n -Twin64 -FE. -Fu. -O3 -Os rtllib.pas
  21.  
  22. ppcrossx64.exe -dDLLIMPORT -dLANGDEU -dDLLDEBUG -n -Twin64 -FE. -Fu. -O3 -Os test.pas
  23.  
  24. x86_64-win64-strip.exe test.exe
  25. x86_64-win64-strip.exe rtllib.dll

And this is the Output:

Code: Bash  [Select][+][-]
  1. ppcrossx64.exe -dDLLEXPORT -dLANGDEU -dDLLDEBUG -n -Twin64 -FE. -Fu. -O3 -Os system.pas
  2. windows.pas(254,15) Error: Compilation raised exception internally
  3. Fatal: Compilation aborted
  4. An unhandled exception occurred at $0041F13E:
  5. EListError: List index exceeds bounds (824)
  6.   $0041F13E
  7.   $004C3C00
  8.   $0057CC6C
  9.   $0057DD5B
  10.   $004369AC
  11.   $00415195
  12.  
  13.  
  14. T:\a\miniFPC\TinyFPC>ppcrossx64.exe -dDLLEXPORT -dLANGDEU -dDLLDEBUG -n -Twin64 -FE. -Fu. -O3 -Os windows.pas
  15. system.pas(19,1) Fatal: Internal error 2016060303
  16. Fatal: Compilation aborted
  17.  
  18. T:\a\miniFPC\TinyFPC>ppcrossx64.exe -dDLLEXPORT -dLANGDEU -dDLLDEBUG -n -Twin64 -FE. -Fu. -O3 -Os classes.pas
  19. system.pas(19,1) Fatal: Internal error 2016060303
  20. Fatal: Compilation aborted
  21.  
  22. T:\a\miniFPC\TinyFPC>ppcrossx64.exe -dDLLEXPORT -dLANGDEU -dDLLDEBUG -n -Twin64 -FE. -Fu. -O3 -Os dialogs.pas
  23. system.pas(19,1) Fatal: Internal error 2016060303
  24. Fatal: Compilation aborted
  25.  
  26. T:\a\miniFPC\TinyFPC>ppcrossx64.exe -dDLLEXPORT -dLANGDEU -dDLLDEBUG -n -Twin64 -FE. -Fu. -O3 -Os errordata.pas
  27. system.pas(19,1) Fatal: Internal error 2016060303
  28. Fatal: Compilation aborted
  29.  
  30. T:\a\miniFPC\TinyFPC>ppcrossx64.exe -dDLLEXPORT -dLANGDEU -dDLLDEBUG -n -Twin64 -FE. -Fu. -O3 -Os errordatadeu.pas
  31. system.pas(19,1) Fatal: Internal error 2016060303
  32. Fatal: Compilation aborted
  33.  
  34. T:\a\miniFPC\TinyFPC>ppcrossx64.exe -dDLLEXPORT -dLANGDEU -dDLLDEBUG -n -Twin64 -FE. -Fu. -O3 -Os errordata.pas
  35. system.pas(19,1) Fatal: Internal error 2016060303
  36. Fatal: Compilation aborted
  37.  
  38. T:\a\miniFPC\TinyFPC>ppcrossx64.exe -dDLLEXPORT -dLANGDEU -dDLLDEBUG -n -Twin64 -FE. -Fu. -O3 -Os exceptions.pas
  39. system.pas(19,1) Fatal: Internal error 2016060303
  40. Fatal: Compilation aborted
  41.  
  42. T:\a\miniFPC\TinyFPC>ppcrossx64.exe -dDLLEXPORT -dLANGDEU -dDLLDEBUG -n -Twin64 -FE. -Fu. -O3 -Os forms.pas
  43. system.pas(19,1) Fatal: Internal error 2016060303
  44. Fatal: Compilation aborted
  45.  
  46. T:\a\miniFPC\TinyFPC>ppcrossx64.exe -dDLLEXPORT -dLANGDEU -dDLLDEBUG -n -Twin64 -FE. -Fu. -O3 -Os fpintres.pas
  47. system.pas(19,1) Fatal: Internal error 2016060303
  48. Fatal: Compilation aborted
  49.  
  50. T:\a\miniFPC\TinyFPC>ppcrossx64.exe -dDLLEXPORT -dLANGDEU -dDLLDEBUG -n -Twin64 -FE. -Fu. -O3 -Os sysinit.pas
  51. system.pas(19,1) Fatal: Internal error 2016060303
  52. Fatal: Compilation aborted
  53.  
  54. T:\a\miniFPC\TinyFPC>ppcrossx64.exe -dDLLEXPORT -dLANGDEU -dDLLDEBUG -n -Twin64 -FE. -Fu. -O3 -Os objpas.pas
  55. system.pas(19,1) Fatal: Internal error 2016060303
  56. Fatal: Compilation aborted
  57.  
  58. T:\a\miniFPC\TinyFPC>ppcrossx64.exe -dDLLEXPORT -dLANGDEU -dDLLDEBUG -n -Twin64 -FE. -Fu. -O3 -Os global.pas
  59. system.pas(19,1) Fatal: Internal error 2016060303
  60. Fatal: Compilation aborted
  61.  
  62. T:\a\miniFPC\TinyFPC>ppcrossx64.exe -dDLLEXPORT -dLANGDEU -dDLLDEBUG -n -Twin64 -FE. -Fu. -O3 -Os locales.pas
  63. system.pas(19,1) Fatal: Internal error 2016060303
  64. Fatal: Compilation aborted
  65.  
  66. T:\a\miniFPC\TinyFPC>ppcrossx64.exe -dDLLEXPORT -dLANGDEU -dDLLDEBUG -n -Twin64 -FE. -Fu. -O3 -Os strutils.pas
  67. system.pas(19,1) Fatal: Internal error 2016060303
  68. Fatal: Compilation aborted
  69.  
  70. T:\a\miniFPC\TinyFPC>ppcrossx64.exe -dDLLEXPORT -dLANGDEU -dDLLDEBUG -n -Twin64 -FE. -Fu. -O3 -Os sysutils.pas
  71. system.pas(19,1) Fatal: Internal error 2016060303
  72. Fatal: Compilation aborted
  73.  
  74. T:\a\miniFPC\TinyFPC>ppcrossx64.exe -dDLLEXPORT -dLANGDEU -dDLLDEBUG -n -Twin64 -FE. -Fu. -O3 -Os xmm.pas
  75. system.pas(19,1) Fatal: Internal error 2016060303
  76. Fatal: Compilation aborted
  77.  
  78. T:\a\miniFPC\TinyFPC>ppcrossx64.exe -dDLLEXPORT -dLANGDEU -dDLLDEBUG -n -Twin64 -FE. -Fu. -O3 -Os rtlunit.pas           system.pas(19,1) Fatal: Internal error 2016060303                                                                       Fatal: Compilation aborted                                                                                                                                                                                                                      T:\a\miniFPC\TinyFPC>ppcrossx64.exe -dDLLEXPORT -dLANGDEU -dDLLDEBUG -n -Twin64 -FE. -Fu. -O3 -Os rtllib.pas            system.pas(19,1) Fatal: Internal error 2016060303                                                                       Fatal: Compilation aborted                                                                                                                                                                                                                      T:\a\miniFPC\TinyFPC>ppcrossx64.exe -dDLLIMPORT -dLANGDEU -dDLLDEBUG -n -Twin64 -FE. -Fu. -O3 -Os test.pas              test.pas(91,1) Error: Undefined symbol: FORMS$_$TFORM_$__$$_CREATE$crc6D164B92                                          test.pas(91,1) Error: Undefined symbol: FORMS$_$TBUTTON_$__$$_CREATE$crc415B3F86                                        test.pas(91,1) Error: Undefined symbol: FORMS$_$TCHECKBOX_$__$$_CREATE$crcDEA6C257                                      test.pas(91,1) Error: Undefined symbol: FORMS$_$TRADIOBOX_$__$$_CREATE$crcF5A1EA62                                      test.pas(91,1) Error: Undefined symbol: FORMS$_$TPROGRESSBAR_$__$$_CREATE$crcC47C6672                                   test.pas(91,1) Error: Undefined symbol: FORMS$_$TCOMBOBOX_$__$$_CREATE$crc4550C053                                      test.pas(91,1) Error: Undefined symbol: FORMS$_$TSPINDATE_$__$$_CREATE$crcE96B2C53                                      test.pas(91,1) Error: Undefined symbol: FORMS$_$TSPINTIME_$__$$_CREATE$crc2C61836C                                      test.pas(91,1) Error: Undefined symbol: FORMS$_$TMEMO_$__$$_CREATE$crc70AD5CCB                                          test.pas(91,1) Error: Undefined symbol: XMM_::=::\_XFILLMEM$POINTER$QWORD$BYTE::=::\QWORD                               test.pas(91,1) Error: Undefined symbol: RTTI_$SYSTEM_$$_EXCEPTADDRSTACK$indirect                                        test.pas(91,1) Error: Undefined symbol: RTTI_$SYSTEM_$$_vmtdef$IUNKNOWN$indirect                                        test.pas(91,1) Fatal: There were 12 errors compiling module, stopping                                                   Fatal: Compilation aborted                                                                                                                                                                                                                      T:\a\miniFPC\TinyFPC>x86_64-win64-strip.exe test.exe                                                                                                                                                                                            T:\a\miniFPC\TinyFPC>x86_64-win64-strip.exe rtllib.dll

But this would work:

Code: Bash  [Select][+][-]
  1. :: library and test stuff ...
  2. ppcrossx64.exe -dDLLEXPORT -dLANGDEU -dDLLDEBUG -n -B -Twin64 -FE. -Fu. -O3 -Os RTLLib.pas
  3. ppcrossx64.exe -dDLLIMPORT -dLANGDEU -dDLLDEBUG -n -B -Twin64 -FE. -Fu. -O3 -Os test.pas
  4.  
  5. x86_64-win64-strip.exe test.exe
  6. x86_64-win64-strip.exe rtllib.dll
  7.  
MS-IIS - Internet Information Server, Apache, PHP/HTML/CSS, MinGW-32/64 MSys2 GNU C/C++ 13 (-stdc++20), FPC 3.2.2
A Friend in need, is a Friend indeed.

PascalDragon

  • Hero Member
  • *****
  • Posts: 6395
  • Compiler Developer
Re: FPC 3.2.2 - Generic Class's - where is the internal Data stored ?
« Reply #13 on: June 30, 2025, 11:09:39 pm »
When I use Generic Classes - where are the internal Data of RTTI and such sort of Information's stored when I use the Generic Classes in the DLL Code ?

The specialization's code and metadata is contained in that unit where you specialized the generic. If you specialize it multiple times in different implementation sections and the compiler can't reach one from the other then there will even be multiple copies contained in the binary.

paule32

  • Hero Member
  • *****
  • Posts: 645
  • One in all. But, not all in one.
Re: FPC 3.2.2 - Generic Class's - where is the internal Data stored ?
« Reply #14 on: July 01, 2025, 12:59:32 pm »
I did it done.
Because I was faced with some Copyright violences of @fibodev / @fibonacci source Codes that I was using public but he would not set the Copyright for private use.

Since two Options are possible:
1. use big DLL, and tiny EXE (without -Ur but with -B)
2. use big EXE (with -Ur Option)

And @fibodev tell me that I can use his Codes for public use, it does not matter anymore if the VMT and/or RTTI Informations lay in the DLL or EXE or both.

Thanks @fibo for your decision.
MS-IIS - Internet Information Server, Apache, PHP/HTML/CSS, MinGW-32/64 MSys2 GNU C/C++ 13 (-stdc++20), FPC 3.2.2
A Friend in need, is a Friend indeed.

 

TinyPortal © 2005-2018