Chilkat for Lazarus / Free Pascal

an object-oriented Pascal API for Lazarus and Free Pascal (FPC)

Windows 32-bit, 64-bit, and Arm64 · Linux x86_64, x86, arm (armv7l), and arm64 · macOS universal (Intel and Apple Silicon). The units also compile in Delphi XE2+ on Windows.

Chilkat for Lazarus is a true object-Pascal API: each Chilkat class is a real Pascal class (TCrypt2, THttp, TZip, …) with native string properties and methods — no handles, no PWideChar, no manual dispose calls. The classes are thin wrappers over the Chilkat C bridge shared library, which CkDllLoader.pas loads dynamically at runtime — there is no link-time dependency, nothing is installed on your machine, and nothing is registered. All units are namespaced (Chilkat.Crypt2, Chilkat.Http, …), so their names can never collide with other libraries in your project.

Download

v11.6.0 04-Sep-2026sha256: 61da14ad2545a0d1e33f545bfdcfe6409d6d81824e8e6d9bb0f144dbbddcd408
Chilkat Lazarus Pascal

This is the full-version Chilkat product. Chilkat libraries are fully functional for a 30-day evaluation; no separate trial build is required. One download covers Windows, Linux, and macOS — the same units compile unchanged on every platform, and the matching shared library for each platform is included.

The 60-second version

  1. Unzip the download to C:\chilkat-lazarus (or ~/chilkat-lazarus).
  2. In Lazarus, open Project → Project Options → Compiler Options → Paths and add the chilkat-lazarus folder to Other unit files (-Fu).
  3. Paste the QuickStart program below, copy the matching Chilkat library (e.g. chilkat_c_bridge_x64.dll on 64-bit Windows) next to your executable, and press F9.

That's the whole setup: one unit path, one library file beside the EXE. The rest of this page fills in the details for each platform.

Documentation & Samples

What's in the download

Unzipping creates a chilkat-lazarus directory. The paths on this page assume C:\chilkat-lazarus on Windows.

File / folderDescription
Chilkat.*.pasOne Pascal unit per Chilkat class (Chilkat.Crypt2.pas, Chilkat.Http.pas, Chilkat.Zip.pas, …), each declaring a class such as TCrypt2. The namespaced names never conflict with other libraries' units.
Chilkat.Base.pas
Chilkat.Utils.pas
Shared support units: TChilkatBase (the common ancestor holding the native object handle) and internal string/conversion helpers. Required by the generated units; you never use them directly.
CkDllLoader.pasLoads the Chilkat shared library at runtime and resolves the entry points. Also exports SetChilkatDllPath for loading the library from an explicit path (see How the library is loaded).
chilkat_c_bridge_win32.dllThe Chilkat library for 32-bit Windows.
chilkat_c_bridge_x64.dllThe Chilkat library for 64-bit Windows.
chilkat_c_bridge_arm64.dllThe Chilkat library for Windows on Arm (FPC/Lazarus aarch64-win64 target; see the Windows on Arm note).
linux\libchilkat_c_bridge_x86_64.so
linux\libchilkat_c_bridge_x86.so
linux\libchilkat_c_bridge_arm.so
linux\libchilkat_c_bridge_arm64.so
The Chilkat shared libraries for Linux, one per architecture: x86_64, 32-bit x86, 32-bit arm hard-float (armv7l — e.g. Raspberry Pi OS 32-bit), and arm64 (see Linux below).
macos\libchilkat_c_bridge.dylibThe Chilkat shared library for macOS as a single universal (fat) binary containing both arm64 and x86_64 — macOS picks the right slice automatically. Code-signed with Chilkat's Developer ID (see macOS below).
license.pdfThe full EULA license agreement.

Using Chilkat in your own project

  1. Tell the compiler where the units are. In Lazarus, select Project → Project Options → Compiler Options → Paths and add C:\chilkat-lazarus to Other unit files (-Fu). (Building with plain FPC from the command line, that's -Fu C:\chilkat-lazarus.) You do not add the .pas files to the project; the compiler finds them from the unit path.
  2. Add the Chilkat units you need to the uses clause. Each class lives in the unit of the same name, prefixed with Chilkat.:
    uses
      SysUtils, Chilkat.Global, Chilkat.Crypt2;
    Chilkat.Global is where the unlock call lives; you'll almost always use it.
  3. Put the Chilkat library where the loader can find it. The simplest reliable choice on every platform is the same directory as your executable — the loader checks there automatically. On 64-bit Windows, copy chilkat_c_bridge_x64.dll next to your EXE (for a Lazarus project that is usually the project folder itself, or wherever Target file name (-o) points).
  4. Write some code. Here is a complete console program: it unlocks Chilkat, AES-encrypts a string, and decrypts it again. The same calls work unchanged in a LCL GUI application — and on Linux and macOS.
    program QuickStart;
    
    {$mode delphi}
    
    uses
      SysUtils, Chilkat.Global, Chilkat.Crypt2;
    
    var
      glob: TGlobal;
      crypt: TCrypt2;
      encStr, decStr: string;
    
    begin
      // Unlock Chilkat once at application startup.
      // Any string unlocks a fully-functional 30-day trial.
      glob := TGlobal.Create;
      crypt := TCrypt2.Create;
      try
        if not glob.UnlockBundle('Anything for 30-day trial') then
        begin
          WriteLn(glob.LastErrorText);
          Exit;
        end;
    
        // AES-256 in CBC mode, hex-encoded output.
        crypt.CryptAlgorithm := 'aes';
        crypt.CipherMode := 'cbc';
        crypt.KeyLength := 256;
        crypt.PaddingScheme := 0;
        crypt.EncodingMode := 'hex';
        crypt.SetEncodedIV('000102030405060708090A0B0C0D0E0F', 'hex');
        crypt.SetEncodedKey('000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F', 'hex');
    
        encStr := crypt.EncryptStringENC('The quick brown fox jumps over the lazy dog.');
        WriteLn('Encrypted: ' + encStr);
    
        decStr := crypt.DecryptStringENC(encStr);
        WriteLn('Decrypted: ' + decStr);
      finally
        crypt.Free;
        glob.Free;
      end;
    end.
  5. Press F9. The encrypted hex string and the decrypted text appear in the console.
If the first Chilkat call raises "Chilkat library could not be loaded", the shared library isn't where the loader looked. Copy the matching library file next to your executable (step 3), or call SetChilkatDllPath with its full path before creating any Chilkat object.
Tip: Call UnlockBundle once at application startup rather than in every procedure. Once unlocked, every Chilkat class in the process remains unlocked for the life of the application.

How the library is loaded

Nothing is linked at build time. The first time your program calls into Chilkat, CkDllLoader.pas loads the shared library whose name matches the target platform — the name is chosen at compile time from the target OS and CPU:

TargetLibrary loaded
Windows 32-bitchilkat_c_bridge_win32.dll
Windows 64-bitchilkat_c_bridge_x64.dll
Windows on Arm (FPC aarch64-win64)chilkat_c_bridge_arm64.dll
Linux x86_64libchilkat_c_bridge_x86_64.so
Linux x86 (32-bit)libchilkat_c_bridge_x86.so
Linux arm (32-bit hard-float)libchilkat_c_bridge_arm.so
Linux arm64libchilkat_c_bridge_arm64.so
macOS (Intel and Apple Silicon)libchilkat_c_bridge.dylib (universal)

The loader tries, in order: a copy already loaded in the process (Windows), the operating system's standard library search (PATH / LD_LIBRARY_PATH / DYLD_LIBRARY_PATH and system directories), and finally the directory containing your executable. That last fallback is why simply shipping the library beside your program works on every platform with no environment setup.

To load from a specific location instead, call SetChilkatDllPath (from CkDllLoader) with the full path before creating any Chilkat object:

SetChilkatDllPath(ExtractFilePath(ParamStr(0)) + 'libchilkat_c_bridge.dylib');

Platform notes

Windows

Copy the DLL matching your target (chilkat_c_bridge_win32.dll, chilkat_c_bridge_x64.dll, or chilkat_c_bridge_arm64.dll) into the directory containing your EXE. Nothing is registered and no installer is needed.

Windows on Arm: the aarch64-win64 FPC/Lazarus target loads the native chilkat_c_bridge_arm64.dll. If you instead compile these units with Delphi's Windows on Arm target (Delphi 13.1+), no action is needed: Delphi WoA produces Arm64EC code, which loads the x64 DLL through Windows' EC interop, and the units select chilkat_c_bridge_x64.dll there automatically.

Linux

Four architectures are provided: x86_64, 32-bit x86, 32-bit hard-float arm (armv7l — e.g. Raspberry Pi OS 32-bit), and arm64. The libraries require glibc 2.27 or newer — in practice, any Linux distribution released around mid-2018 or later (Ubuntu 18.04+, Debian 10+, RHEL/CentOS 8+, Fedora 28+, and equivalents). To check a system, run ldd --version; the first line reports the glibc version.

The easiest deployment is to ship the matching .so in the same directory as your executable — the loader finds it there with no LD_LIBRARY_PATH or ldconfig setup. A system-wide install works too:

sudo cp libchilkat_c_bridge_x86_64.so /usr/local/lib/
sudo ldconfig

macOS (Intel and Apple Silicon)

One file covers both CPUs: libchilkat_c_bridge.dylib is a universal (fat) binary, and macOS loads the right slice automatically — your Pascal code needs no architecture {$IFDEF}. The dylib is signed with Chilkat's Developer ID, so it passes Gatekeeper and can be included in a notarized application.

Place the dylib in the same directory as your executable — for a .app bundle that is MyApp.app/Contents/MacOS/ — and the loader finds it with no extra setup. To use the bundle-canonical Contents/Frameworks/ location instead, point the loader at it explicitly:

{$IFDEF DARWIN}
SetChilkatDllPath('@executable_path/../Frameworks/libchilkat_c_bridge.dylib');
{$ENDIF}

Deploying your application

The Chilkat shared library is the only runtime dependency: nothing needs to be installed or registered on the target machine.

TargetShip this fileWhere
Windows 32-bitchilkat_c_bridge_win32.dllSame directory as the EXE
Windows 64-bitchilkat_c_bridge_x64.dllSame directory as the EXE
Windows on Armchilkat_c_bridge_arm64.dll (FPC) or chilkat_c_bridge_x64.dll (Delphi Arm64EC)Same directory as the EXE
Linux (any arch)the matching libchilkat_c_bridge_*.soBeside the executable, or /usr/local/lib (after ldconfig)
macOSlibchilkat_c_bridge.dylibMyApp.app/Contents/MacOS/ (or beside a command-line executable)

Using Embarcadero Delphi?

These units also compile in Delphi XE2 and later on Windows. However, Delphi developers may prefer the dedicated Chilkat Delphi DLL download, which additionally covers Delphi's Linux, macOS, iOS, and Android targets.

Next Steps

Browse the Pascal examples for working code covering HTTP/REST, JSON, XML, email (SMTP/POP3/IMAP), FTP, SFTP/SSH, Zip, PDF, digital signatures, encryption, and much more. For questions, see the reference documentation or contact Chilkat support.