Step 1: Load FlexiCapture 12 SDK

To start your work with ABBYY FlexiCapture 12 SDK you need to create the Engine object. The Engine object is the top object in the hierarchy of the ABBYY FlexiCapture 12 SDK objects and is the only ABBYY FlexiCapture 12 SDK externally creatable object.

To load the Engine object, do the following.

  1. Create the EngineLoader object using the GetEngineLoader exported function. The EngineLoader object provides access to the settings required during the Engine object initialization.
  2. Set up all the necessary parameters using the EngineLoader object properties. The CustomerProjectID is a required property. You can set the path to the online licensing file, the corresponding password and a path to the folder, in which ABBYY FlexiCapture 12 SDK should store user-specific data if needed.
  3. Call the GetEngine method of the EngineLoader object and receive the reference to the Engine object.

C++ (COM) code

This procedure is used in the ABBYY FlexiCapture 12 SDK samples which can be found in the Samples folder (Start > Programs > ABBYY FlexiCapture 12 SDK > Code Samples Folder).

Received in such a way, the Engine object is a singleton, so only one object of this type may be created in a single instance of the application that uses ABBYY FlexiCapture SDK. Repeated attempts to create the Engine object will return the same object. It is important to notice that the process of creation of the Engine object takes rather long time because it requires loading not only the FCEngine.dll, but a whole set of other DLLs.

Note: .NET developers must make sure to specify [STAThread] (single-threaded apartment model) оr [MTAThread] (multi-threaded apartment model) as an attribute on the application main function, otherwise an error may occur:

public static void Main()

It is recommended to use the [STAThread] because it is now more accepted.

If your license has expired, the Engine object will be created but only the StartLogging, StopLogging methods of the Engine object will be available. Other methods of the Engine object will return CLASS_E_NOTLICENSED error code.

It is prohibited to initialize ABBYY FlexiCapture 12 SDK at the entry points of other DLLs, and also in constructors and destructors of static and global objects implemented in DLLs, because they are called at the DLL entry points. This restriction is due to the fact that the Win32 LoadLibrary function is not re-entrant. A user should initialize ABBYY FlexiCapture 12 SDK elsewhere, for example, in WinMain function of an EXE module.

During initialization, ABBYY FlexiCapture 12 SDK will reset the LC_CTYPE setting of msvcrt.dll to operating system defaults. This fact should be taken into account if your application depends upon the msvcrt.dll locale-dependent services.

After creating the Engine object, you can use ABBYY FlexiCapture 12 SDK objects in your application. The next step is to open a FlexiCapture project which contains the Document Definitions and other settings you will use for processing.


ABBYY FlexiCapture 12 SDK provides two more methods for loading the Engine object, which allow you to work with the Engine in different threads.

More information on loading ABBYY FlexiCapture SDK in applications written in other programming languages:

See also
Step 2: Open Project

15.08.2023 13:19:30

Usage of Cookies. In order to optimize the website functionality and improve your online experience ABBYY uses cookies. You agree to the usage of cookies when you continue using this site. Further details can be found in our Privacy Notice.