Cross-Platform C Library Integration

Oversigt

HotPDF bruger HPDFCLibs.pas som broen mod Pascal mellem Delphi og de statisk linkede C-objektfiler, der bruges af HPDFZLib.pas, HPDFJpeg.pas og HPDFTiff.pas. Enheden blotlægger de runtime-symboler, som disse biblioteker forventer, mens der bevares ét ensartet Pascal-deklarationslag for både Win32 og Win64 builds

Nøglefunktioner

  • Delt runtime-bro for zlib-ng i zlib-kompatibel tilstand, zlib-ng 64-bit runtime SIMD-forsendelse, libjpeg-turbo 3.1.90 med NASM SIMD-objekter og libtiff 4.7.1
  • Dækning af hukommelse, stdio, streng/tegn og udvalgte runtime-/matematik-hjælpere
  • 32-byte justeret malloc, free, realloc og calloc bro for SIMD-venlige indfødte buffere
  • Win32-kompatibilitet med bcc32c-byggede zlib-ng OMF-objekter og bcc32-byggede JPEG/TIFF OMF-objekter fraLib\thirdparty\Win32
  • Win64-kompatibilitet med COFF64 obj-filer fraLib\thirdparty\Win64og zlib-ng COFF-objekter fraLib\thirdparty\Win64x
  • Hjælpetyper i pegerstørrelse og Pascal-stubs for symboler, som Delphi-linkeren ikke kan importere direkte

Højtydende JPEG-backend

JPEG-standardarbejdsgange understøttes af libjpeg-turbo 3.1.90 via det klassiske libjpeg-kompatible API, der blotlægges af HPDFJpeg.pas. Win32-, Win64- og Win64x-objekt-builds inkluderer de relevante NASM SIMD-accelerationsobjekter, og det samme bundtede objektsæt er også tilgængeligt for TIFF-integrationslaget til JPEG-komprimeret TIFF-håndtering

Zlib-ng bro-noter

Win64 Flate-billedstrømme bruger en lille C-bro omkring zlib-ng one-shot komprimering. Broen holder indfødte zlib-ng længdetyper inde i C, mens HotPDFs Pascal-vendte 32-bit bufferlængder og maksimale komprimeringsadfærd bevares

Win64x og diagnostiske MSVC Win64 zlib-ng objekt-builds inkluderer runtime-afsendte SSE2, SSSE3, SSE4.1, SSE4.2, PCLMULQDQ og AVX2 implementationer med generiske fallbacks. Win32 beholder de generiske zlib-ng OMF-objekter for bcc32c-kompatibilitet, mens Win32 JPEG/TIFF-stien forbliver på klassiske bcc32 OMF-objekter

Understøttede funktionsgrupper

  • Hukommelsesstyring:malloc, free, realloc, calloc med 32-byte justeret allokering
  • Fil- og strømhandlinger:fopen, fclose, fputc, fread, fwrite, fflush, ferror
  • Streng- og tegnfunktioner:strcpy, sprintf, memcpy, memmove, memset, tolower, toupper, towlower, towupper, getenv, atoi
  • Runtime-hjælpere:ftol, setjmp, log, snprintf, memcmp

Arkitekturunderstøttelse

  • Win32:Pascal-wrappere og WinAPI-backed hjælpere, der matcher bcc32c og bcc32 OMF-objekter, som linkes af enhver understøttet Delphi Win32-version
  • Win64:msvcrt.dll-importer plus små hjælper-stubs, der kræves af de MSVC-genererede COFF64-objekter
  • Fælles typer:PtrInt og PtrUInt holder pegerstørrelses-deklarationer justeret på tværs af begge mål

Se også