Integrasjon av C-bibliotek på tvers av plattformer

Oversikt

HotPDF bruker HPDFCLibs.pas som den Pascal-vendte broen mellom Delphi og de statisk lenkede C-objektfilene som brukes av HPDFZLib.pas, HPDFJpeg.pas og HPDFTiff.pas. Enheten eksponerer kjøretidssymbolene disse bibliotekene forventer, samtidig som den beholder ett konsistent Pascal-deklarasjonslag for både Win32- og Win64-bygg

Nøkkelfunksjoner

  • Delt kjøretidsbro for zlib-ng i zlib-kompatibel modus, zlib-ngs 64-biters SIMD-distribusjon ved kjøring, libjpeg-turbo 3.1.90 med NASM-SIMD-objekter og libtiff 4.7.1
  • Dekning av minne-, stdio-, streng-/tegn- og utvalgte matematikk-/kjøretidshjelpere
  • 32-byte justert malloc, free, realloc og calloc-bro for SIMD-vennlige native buffere
  • Win32-kompatibilitet med bcc32c-bygde zlib-ng OMF-objekter og bcc32-bygde JPEG/TIFF OMF-objekter fra Lib\thirdparty\Win32
  • Win64-kompatibilitet med COFF64-objektfiler fra Lib\thirdparty\Win64 og zlib-ng COFF-objekter fra Lib\thirdparty\Win64x
  • Pointerstørrelse-hjelpetyper og Pascal-stubber for symboler Delphi-linkeren ikke kan importere direkte

Høyytelses JPEG-bakende

Vanlige JPEG-arbeidsflyter støttes av libjpeg-turbo 3.1.90 gjennom det klassiske libjpeg-kompatible API-et som eksponeres av HPDFJpeg.pas. Objektbyggene for Win32, Win64 og Win64x inkluderer de relevante NASM-SIMD-akselerasjonsobjektene, og det samme samlede objektsettet er også tilgjengelig for TIFF-integrasjonslaget ved JPEG-komprimert TIFF-håndtering

Notater om zlib-ng-broen

Win64 Flate-bildestrømmer bruker en liten C-bro rundt engangskomprimering i zlib-ng. Broen holder de opprinnelige zlib-ng-lengdetypene inne i C, samtidig som HotPDFs Pascal-vendte 32-biters bufferlengder og maksimale komprimeringsatferd bevares

Win64x- og diagnostiske MSVC Win64 zlib-ng-objektbygg inkluderer kjøretidsdistribuerte SSE2-, SSSE3-, SSE4.1-, SSE4.2-, PCLMULQDQ- og AVX2-implementasjoner med generiske reservevalg. Win32 beholder de generiske zlib-ng OMF-objektene for bcc32c-kompatibilitet, mens Win32 JPEG/TIFF-banen fortsatt bruker klassiske bcc32 OMF-objekter

Støttede funksjonsgrupper

  • Minnehåndtering: malloc, free, realloc, calloc med 32-byte justert allokering
  • Fil- og strømoperasjoner: fopen, fclose, fputc, fread, fwrite, fflush, ferror
  • Streng- og tegnfunksjoner: strcpy, sprintf, memcpy, memmove, memset, tolower, toupper, towlower, towupper, getenv, atoi
  • Kjøretidshjelpere: ftol, setjmp, log, snprintf, memcmp

Arkitekturstøtte

  • Win32: Pascal-innpakninger og WinAPI-baserte hjelpere som passer til bcc32c- og bcc32 OMF-objektene som lenkes av alle støttede Delphi Win32-versjoner
  • Win64: msvcrt.dll-importer pluss små hjelpestubber som kreves av MSVC-genererte COFF64-objekter
  • Felles typer: PtrInt og PtrUInt holder pekerstørrelsesdeklarasjoner justert på tvers av begge mål

Se også