Windows on ARM
PDFlibPas stödjer Windows 11 on ARM genom nativa Free Pascal ARM64- och Delphi ARM64EC-källbyggen, med det befintliga TPDFlib-API:et
| Kompilator | Mål | Program- och DLL-kompatibilitet |
|---|---|---|
| Free Pascal 3.3.1 med matchande ARM64-RTL och paket | aarch64-win64 | Nativa ARM64-Windows-program och ARM64-DLL:er |
| Delphi med Windows ARM64EC-kompilatorn och RTL:n installerade | WinARM64EC | ARM64EC-program och DLL:er som använder det x64-kompatibla ABI:et på Windows 11 on ARM |
ARM64 och ARM64EC har olika binära gränssnitt och beroendekrav; använd en kompilator, RTL och DLL-uppsättning som matchar det valda målet
Free Pascal-byggen
Välj en kompilator vars -iTP-utdata är aarch64 och vars -iTO-utdata är win64
set FPC=C:\Toolchains\FPC\bin\aarch64-win64\fpc.exe
build-Lazarus-Lib.cmd winarm64
build-Lazarus-DLL.cmd winarm64
Bibliotekunit:er skrivs till Lib\FPC\aarch64-win64; den fullständiga DLL:en skrivs till DLL\FPC\aarch64-win64\Release\PDFlibDLL-aarch64-win64.dll
Skicka debug för ett debug-bygge; build-Lazarus-Lib-TRIAL.cmd winarm64 bygger trial-bibliotekunit:er
Runtime-paketet Lib\FPC\PDFlibPasLaz.lpk byggs också med en nativ ARM64-installation av Lazarus/FPC; dess optimeringsnivå matchar kommandoradsbyggena av biblioteket
Håll kompilatorkonfigurationen och paketsökvägarna konsistenta med målet, och lägg inte till -FcUTF8, som kan förstöra binära AnsiString-data i PDF-identifierare och krypteringsvärden
Delphi ARM64EC-byggen
Bygget kräver bin64\dccarm64ec.exe och RTL:n lib\winarm64ec\release, inklusive librtlhelper.a; RAD Studio 37.0 med ARM64EC-verktygskedjan är kvalificerat
build-WinARM64EC-Lib.cmd -BDSRoot "C:\Program Files (x86)\Embarcadero\Studio\37.0"
DLL\build-WinARM64EC.cmd -BDSRoot "C:\Program Files (x86)\Embarcadero\Studio\37.0"
Skripten hittar också RAD Studio via BDS eller installationsregistret; använd -Version när du väljer en annan registrerad installation
Bibliotekunit:er skrivs till Lib\37.0\WinARM64EC\Release, och DLL:en skrivs till DLL\WinARM64EC\Release\PDFlibDLLARM64EC.dll
Skicka -Debug eller -Trial för separata debug- respektive trial-utdatakataloger; motsvarande -TRIAL.cmd-ingångspunkter väljer trial-byggen automatiskt
Utdatavalideringen kontrollerar ARM64EC CHPE-metadata, eftersom en ARM64EC PE-avbildning använder ett AMD64-machine-fält; machine-fältet ensamt kan inte skilja den från ett vanligt x64-bygge
Körningsleverantörer
| Förmåga | Windows ARM-leverantör | Driftsättning |
|---|---|---|
| AES CBC och GCM | Windows CNG | Systemets bcrypt.dll |
| JPEG | Windows GDI+ | Systemets gdiplus.dll |
| Komprimering | FPC Pascal-implementering eller Delphi System.ZLib | Länkas via den valda kompilatorvägen |
| XMP | Windows MSXML; Delphi ARM64EC använder typade COM-gränssnitt och avgränsad SAX-preflight | Systemets MSXML 6 för Delphi ARM64EC |
| JPEG 2000 | Delat OpenJPEG 2-bibliotek | Driftsätt openjp2.dll för programmets ABI |
| JBIG2-kodning | Pascal MMR-kodare | Uppsättningen externa Intel-kodarobjekt exkluderas |
Använd en nativ ARM64 OpenJPEG-DLL för FPC-program; Delphi ARM64EC-program kan använda en x64-kompatibel OpenJPEG-DLL, med Windows som tillhandahåller emulering för x64-beroendet
Lib\thirdparty\Build-OpenJPEGWindowsARM.ps1 bygger OpenJPEG 2.5.4 från ett uppströms källträd med den matchande LLVM-MinGW-Clang-drivaren
powershell.exe -NoProfile -ExecutionPolicy Bypass -File Lib\thirdparty\Build-OpenJPEGWindowsARM.ps1 -Architecture ARM64 -Clang "C:\Toolchains\llvm-mingw\bin\aarch64-w64-mingw32-clang.exe" -SourceRoot "C:\Sources\openjpeg-2.5.4" -OutputDirectory "C:\MyApp\ARM64"
För en x64 OpenJPEG-DLL väljer du -Architecture x64 och drivaren x86_64-w64-mingw32-clang.exe
OpenJPEG läses in när dess codec efterfrågas; en saknad eller inkompatibel leverantör rapporterar ett uttryckligt fel och hindrar inte orelaterade PDF-arbetsflöden från att starta
Valfria PDFium-, Cairo-, OCR-, streckkods- och andra nativa utbyggnader kräver också DLL:er som är kompatibla med programmets ABI
DLL-användning och verifiering
Slå upp Windows-DLL-ingångspunkter efter namn med GetProcAddress; Windows ARM-DLL:en exponerar den befintliga namngivna exportytan, UTF-16-strängar, 32-bitars opaka instanshandtag och 64-bitarspekare för buffertar
Behåll handtagen som 32-bitars heltal med tecken, behåll datapekare på processens pekarstorlek, och frigör buffertar och instanser innan DLL:en lastas ur
De kvalificerade konsolarbetsflödena täcker PDF-skapande, sparande/inläsning, textextraktion, kryptering, XMP, Windows bitmap/JPEG-rendering, JPEG 2000-kodning och DLL-anrop över den exporterade ABI:n
GUI, skrivare, hårdvaruintegration och valfria tredjepartsleverantörer kräver programspecifik validering; testsviten finns på begäran för köpare av enterprise-licenser
För Linux- och macOS-mål, se Native Linux and macOS