Integración de biblioteca C multiplataforma

Descripción general

HotPDF usa HPDFCLibs.pas como el puente hacia Pascal entre Delphi y los archivos objeto C enlazados de forma estática que usan HPDFZLib.pas, HPDFJpeg.pas y HPDFTiff.pas. La unidad expone los símbolos de tiempo de ejecución que esperan esas bibliotecas y mantiene una sola capa de declaraciones Pascal coherente para las compilaciones Win32 y Win64

Características clave

  • Puente compartido en tiempo de ejecución para zlib-ng en modo compatible con zlib, despacho SIMD en tiempo de ejecución de zlib-ng de 64 bits, libjpeg-turbo 3.1.90 con objetos SIMD NASM y libtiff 4.7.1
  • Cobertura de ayudantes de memoria, stdio, cadenas/caracteres y algunas funciones de matemáticas/tiempo de ejecución
  • Puente para malloc, free, realloc y calloc alineados a 32 bytes para buffers nativos aptos para SIMD
  • Compatibilidad Win32 con objetos OMF de zlib-ng compilados con bcc32c y objetos OMF JPEG/TIFF compilados con bcc32 desde Lib\thirdparty\Win32
  • Compatibilidad Win64 con archivos obj COFF64 desde Lib\thirdparty\Win64 y objetos COFF de zlib-ng desde Lib\thirdparty\Win64x
  • Tipos auxiliares del tamaño de puntero y stubs Pascal para símbolos que el enlazador de Delphi no puede importar directamente

Backend JPEG de alto rendimiento

Los flujos JPEG estándar están respaldados por libjpeg-turbo 3.1.90 a través de la API clásica compatible con libjpeg expuesta por HPDFJpeg.pas. Las compilaciones de objetos Win32, Win64 y Win64x incluyen los objetos de aceleración SIMD NASM correspondientes, y el mismo conjunto de objetos incluido también está disponible para la capa de integración TIFF para el manejo de TIFF comprimidos con JPEG

Notas del puente Zlib-ng

Los flujos de imagen Flate en Win64 usan un pequeño puente en C alrededor de la compresión de una sola pasada de zlib-ng. El puente mantiene dentro de C los tipos nativos de longitud de zlib-ng mientras preserva las longitudes de buffer de 32 bits visibles desde Pascal y el comportamiento de compresión máxima de HotPDF

Las compilaciones de objetos zlib-ng Win64x y la diagnóstica MSVC Win64 incluyen implementaciones con despacho en tiempo de ejecución para SSE2, SSSE3, SSE4.1, SSE4.2, PCLMULQDQ y AVX2 con alternativas genéricas. Win32 conserva los objetos OMF genéricos de zlib-ng para compatibilidad con bcc32c, mientras que la ruta JPEG/TIFF de Win32 sigue usando los objetos OMF clásicos de bcc32

Grupos de funciones compatibles

  • Administración de memoria: malloc, free, realloc, calloc con asignación alineada a 32 bytes
  • Operaciones de archivos y flujos: fopen, fclose, fputc, fread, fwrite, fflush, ferror
  • Funciones de cadenas y caracteres: strcpy, sprintf, memcpy, memmove, memset, tolower, toupper, towlower, towupper, getenv, atoi
  • Ayudantes de tiempo de ejecución: ftol, setjmp, log, snprintf, memcmp

Compatibilidad de arquitectura

  • Win32: envoltorios Pascal y ayudantes respaldados por WinAPI que coinciden con los objetos OMF bcc32c y bcc32 enlazados por cada versión Win32 de Delphi admitida
  • Win64: importaciones de msvcrt.dll más pequeños stubs de ayuda requeridos por los objetos COFF64 generados por MSVC
  • Tipos comunes: PtrInt y PtrUInt mantienen alineadas las declaraciones con tamaño de puntero en ambos destinos

Véase también