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

KompilatorMålProgram- och DLL-kompatibilitet
Free Pascal 3.3.1 med matchande ARM64-RTL och paketaarch64-win64Nativa ARM64-Windows-program och ARM64-DLL:er
Delphi med Windows ARM64EC-kompilatorn och RTL:n installeradeWinARM64ECARM64EC-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ågaWindows ARM-leverantörDriftsättning
AES CBC och GCMWindows CNGSystemets bcrypt.dll
JPEGWindows GDI+Systemets gdiplus.dll
KomprimeringFPC Pascal-implementering eller Delphi System.ZLibLänkas via den valda kompilatorvägen
XMPWindows MSXML; Delphi ARM64EC använder typade COM-gränssnitt och avgränsad SAX-preflightSystemets MSXML 6 för Delphi ARM64EC
JPEG 2000Delat OpenJPEG 2-bibliotekDriftsätt openjp2.dll för programmets ABI
JBIG2-kodningPascal MMR-kodareUppsä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

Referensindex