Topics   All   MacOS (Only)   Windows (Only)   Linux (Only, Not)   iOS (Only, Not)  
Components   Crossplatform Mac & Win   Server   Client   Old   Deprecated   Guides   Examples   Videos
New in version: 10.2   10.3   10.4   10.5   11.0   11.1   11.2   11.3   11.4   11.5    Statistic    FMM    Blog  


Initializes the XL library by loading it.

Component Version macOS Windows Linux Server iOS SDK
XL 2.9 ✅ Yes ✅ Yes ✅ Yes ✅ Yes ✅ Yes
MBS( "XL.Initialize"; LibPath; LicenseName; LicenseKey )   More


Parameter Description Example
LibPath Native path to the DLL on Windows or Dylib file on MacOS.
Can be empty for default file name with file in same folder as plugin.
LicenseName The name of your libXL license. ""
LicenseKey The license key of your libXL license. ""


Returns OK on success.


Initializes the XL library by loading it.
You can keep the library in a database field and export it at runtime to a known location and load it from there.
If you have no license yet, you can test this function by passing empty strings for name and key.

For getting a license key, please visit the libXL website:

Starting with version 4.4, you can pass just the filename of library and the plugin finds it in the Extensions folder or in FileMaker's application folder.

Windows error 193 means that 64-bit FileMaker tried to load 32-bit library or 32-bit FileMaker tried to load 64-bit library. The bit level must match between app and library. For macOS the error message will tell you about wrong architecture.

Starting version 9.5, the plugin will look into the same folder for the DLL as the plugin resides. And we still look for 32/64 suffixes to DLL name. If no name is provided, we look for libxl.dll/dylib/so files.

If you get a crash here on MacOS, please check if crash report says Code Signature Invalid. Then you may need to code sign the dylib yourself to match the code signature of your runtime application. The dylib from MBS is normally code signed already and should work as is.

This function requires a native path. Use Path.FileMakerPathToNativePath to convert a FileMaker path to a native path if required. If you like to have the user choose the path, you can use FileDialog functions.
For Server be aware that server has limited permissions and may not be able to access all files on a computer.


Initialize XL:

MBS( "XL.Initialize"; "/Library/FileMaker Server/Extensions/libxl.dylib"; "Test User"; "mac-43567890..." )

Initialize when needed:

#Initialize XL
If [MBS( "XL.IsInitialized" ) ≠ 1]
    If [Get ( SystemPlatform ) = -3]
        # iOS
        Exit Script []
    Else If [Get ( SystemPlatform ) = -2]
        # Windows
        Set Variable [$path; Value: "libxl.dll"]
        Set Variable [$key; Value: "win-32213..."]
        # Mac
        Set Variable [$path; Value: "libxl.dylib"]
        Set Variable [$key; Value: "mac-32213..."]
    End If
    Set Variable [$r; Value: MBS( "XL.Initialize"; $path; "test"; $key )]
    If [$r ≠ "OK"]
        Show Custom Dialog [ "LibXL failed to initialize"; $r]
    End If
End If

Initialize with license key on Windows with Server:

MBS( "XL.Initialize"; "C:\Program Files\FileMaker\FileMaker Server\Database Server\Extensions\libxl.dll"; "Test User"; "win-43567890..." )

Initialize automatically and look in same folder as plugin for the DLL/dylib/so file:

MBS("XL.Initialize"; ""; $LicenseName; $LicenseKey)

Register LibXL for MBS Plugin

If [ MBS("XL.IsInitialized") ≠ 1 ]
      If [ MBS("IsMacOS") ]
            Set Variable [ $r; Value: MBS( "XL.Initialize"; $path; "xxx"; "mac-xxx" )]
      Else If [ MBS("IsWindows") ]
            Set Variable [ $r; Value: MBS( "XL.Initialize"; $path; "xxx"; "win-xxx" )]
      Else If [ MBS("IsLinux") ]
            Set Variable [ $r; Value: MBS( "XL.Initialize"; $path; "xxx"; "linux-xxx" )]
      Else If [ MBS("IsIOS") ]
            Set Variable [ $r; Value: MBS( "XL.Initialize"; $path; "xxx"; "ios-xxx" )]
            Set Variable [ $r; Value: "new platform?" ]
      End If
      If [$r ≠ "OK"]
            Show Custom Dialog ["Problem with LibXL Registration"; $r]
      End If
End If

Init with automatic picking of library name:

MBS( "XL.Initialize"; ""; ""; "" )
// looks for libxl library in plugin folder.

See also

Release notes

  • Version 11.2
    • Changed XL.Initialize to accept empty path and pick the file name automatically per platform.
  • Version 9.5
    • Changed DLL loading for DynaPDF.Initialize and XL.Initialize functions to look for given DLL path, try 32/64 DLLs. If only file name is given, we look into plugin folder, too. If no file name is given, we try default file name.
  • Version 8.0

Example Databases

Blog Entries

Created 18th August 2014, last changed 23th March 2021

XL.Format.SetWrap - XL.IsInitialized

Feedback: Report problem or ask question.

MBS FileMaker Plugins

Start Chat