Hallo zusammen,
noch ein frohes Neues Jahr euch Allen.
Zum neuen Jahr gibt es ein schönes Neues
PDF Framework.
Ihr habt das sicher auch schon entdeckt
Es ist wohl FPC basiert, mit Bindungen zu Delphi.
Die Libraries selbst basieren aud C/C++, und ich frage mich im Moment wie diese Bindungen zustande kommen.
Mit FPC kenne ich mich nicht aus, aber ich habe schon solche wilden Konstrukte bei denen mal öfters gesehen.
Anscheinend ist dieses Framework für alle möglichen Platformen kompatibel, und bindet sich dann als Pascal in Delphi ein.
Ich frage mich wo die Typen herkommen, z.B. diese hier
Delphi-Quellcode:
//------------------------------------------------------------------------------
#ifdef UBERPDFSDK_DYNAMIC_BINDING
//------------------------------------------------------------------------------
typedef UBER_INT (UBERAPI *fn_UberPdfSdk_File_Io_OpenForReadingA) (
CONST_LP_UBER_CSTR lpFilePathA,
UBER_SIZE_T cchlpFilePathBufferSize,
LP_UBERPDFSDK_FILE_IO_HANDLE lpUberPdfSdkFileIoH
);
//------------------------------------------------------------------------------
#else
//------------------------------------------------------------------------------
UBER_INT UBERAPI UberPdfSdk_File_Io_OpenForReadingA (
CONST_LP_UBER_CSTR lpFilePathA,
UBER_SIZE_T cchlpFilePathBufferSize,
LP_UBERPDFSDK_FILE_IO_HANDLE lpUberPdfSdkFileIoH
);
//------------------------------------------------------------------------------
#endif
//------------------------------------------------------------------------------
kommt aus einem C/C++ Header, und wird anscheinend so 1:1 in Pascal verwendet.
Delphi-Quellcode:
//------------------------------------------------------------------------------
// uberpdfsdk_file_io
//------------------------------------------------------------------------------
{$ifndef UBER_DEFINED_COMPILER_REQUIRES_FILE_IO_LESS}
UberPdfSdk_File_Io_OpenForReadingA : fn_UberPdfSdk_File_Io_OpenForReadingA;
{$ifdef UBER_DEFINED_COMPILER_SUPPORTS_WIDECHAR}
UberPdfSdk_File_Io_OpenForReadingW : fn_UberPdfSdk_File_Io_OpenForReadingW;
{$endif} //UBER_DEFINED_COMPILER_SUPPORTS_WIDECHAR
UberPdfSdk_File_Io_OpenForWritingA : fn_UberPdfSdk_File_Io_OpenForWritingA;
...
Eine gesonderte Typdefinition für Pascal dafür habe ich jetzt nicht gefunden, kann aber sein das ich es überlesen habe.
Vielleicht kommt ja FPC damit klar, und auch Typdefinitionen aus Headern zu lesen, aber ich denke Delphi kann das nicht.
Oder irre ich mich da ?
Könnte ja auch sein das hier am Ende per FPC nur Delphi-kompatible Libraries rauskommen, für die man dann noch Interfaces/Wrapper schreiben muss ?
Jedenfalls sieht das für mich wie ein sehr interessanter Crossplatform-Ansatz von C/C++ auf alle möglichen Zielplattformen zu sein, was ein gewisses Potential hat.
Kennt sich jemand mit dieser Art Crossplatfom-Entwicklung aus, und könnte mir auf die Sprünge helfen wie das wohl unter Delphi korrekt eingebunden werden könnte ?
Die Frage wäre auch wie das unter MacOs gehandhabt wird, da gibt es doch kein C/C++, oder etwa doch (ObjectiveC ist ja etwas aus einem anderen Universum).
Rollo