Questa funzione serve per ottenere un puntatore all’interfaccia IEngine. Accetta come parametro di input il numero Customer Project ID, ovvero una stringa alfanumerica comune a tutte le licenze Developer e Runtime utilizzate dal progetto.
Per gli utenti Linux e Windows, questa funzione fornisce un accesso semplificato alla gestione delle licenze online, se necessario, e consente anche di specificare alcuni parametri aggiuntivi durante l’inizializzazione.
Private Declare Function InitializeEngine Lib "FREngine.dll" ( _ CustomerProjectID As String, _ LicensePath As String, _ LicensePassword As String, _ FREngineDataFolder As String, _ FREngineTempFolder As String, _ IsSharedCPUCoresMode As Boolean, _ ByRef Engine As FREngine.IEngine) _As Integer
CustomerProjectID[in] Una string contenente il Customer Project ID.
Durante l’inizializzazione della libreria, nell’elenco di tutte le licenze disponibili viene cercata una License Developer o Runtime corrispondente a questo Customer Project ID. Se non viene trovata alcuna licenza corrispondente, si verificherà un errore relativo all’ultima licenza controllata. Tuttavia, è possibile passare 0 per questo parametro e selezionare la licenza in un secondo momento, chiamando il metodo IEngine::SetCurrentLicense prima di qualsiasi altro metodo della libreria.
LicensePath[in] Il nome completo del file della licenza online. Se non utilizzi una licenza online, passa invece una stringa vuota "" oppure un puntatore Null. In questo caso, occorre passare una stringa vuota "" oppure un puntatore Null.Per gli utenti macOS: questo parametro è riservato a un utilizzo futuro.LicensePassword[in] La password della licenza online. Se non utilizzi una licenza online, passa invece una stringa vuota "" oppure un puntatore Null.Per gli utenti macOS: questo parametro è riservato a un utilizzo futuro.FREngineDataFolder[in] Contiene il percorso della cartella in cui ABBYY FineReader Engine deve archiviare i dati specifici dell’utente.Per impostazione predefinita, per l’installazione automatica:%ProgramData%\ABBYY\SDK\12\FineReader Engine for auxiliary engine dataInoltre, per Linux e Windows:%ProgramData%\ABBYY\SDK\12\Licenses for license dataSe imposti il valore di FREngineDataFolder, tutte le informazioni ausiliarie verranno scritte in una nuova cartella dati.Potrebbe essere necessario modificare il valore predefinito, ad esempio se le impostazioni della lingua dell’interfaccia della tua applicazione devono essere diverse da quelle di altre applicazioni che utilizzano FineReader Engine. Dopo aver modificato il valore predefinito, assicurati di disporre delle autorizzazioni di controllo completo per la nuova cartella dati.FREngineTempFolder[in] Contiene il percorso della cartella per i file temporanei di ABBYY FineReader Engine. Per impostazione predefinita, è la cartella %TEMP%\ABBYY FineReader Engine 12.IsSharedCPUCoresMode[in] Specifica se i core della CPU devono essere utilizzati in modalità condivisa. Esistono due modalità di utilizzo dei core della CPU: separata e condivisa. In modalità separata, ABBYY FineReader Engine non utilizza più processi di quanti ne siano consentiti dalla licenza. In modalità condivisa, può essere eseguito un numero qualsiasi di processi, ma tutti questi processi utilizzeranno solo i core della CPU specificati dalla proprietà IMultiProcessingParams::SharedCPUCoresMask.
Questo parametro viene ignorato in ABBYY FineReader Engine per Windows.
Engine[out, retval] Un puntatore alla variabile puntatore IEngine* che riceve il puntatore di interfaccia all’oggetto Engine risultante.
È possibile creare un solo oggetto Engine tramite questa funzione in una singola istanza dell’applicazione che utilizza ABBYY FineReader Engine. I tentativi ripetuti di creare l’oggetto Engine restituiranno lo stesso oggetto.
La creazione dell’oggetto Engine può richiedere un tempo considerevole. Durante l’inizializzazione, il motore carica la libreria principale elencata di seguito insieme a un gran numero di librerie dinamiche aggiuntive:
Linux: libFREngine.so
macOS: libFREngine.dylib
Windows: FREngine.dll
Quando si utilizza una licenza di rete, l’inizializzazione su Linux e Windows potrebbe richiedere più tempo a causa della comunicazione con il server delle licenze. Assicurarsi che la connessione di rete soddisfi i requisiti di prestazione; per un funzionamento affidabile con una licenza di rete si raccomanda una larghezza di banda di almeno 100 Kb/s.
È possibile creare ed eseguire l’oggetto Engine su un sistema multi-processore, ma in ogni processo può esistere un solo oggetto Engine. Una seconda chiamata a InitializeEngine all’interno dello stesso processo restituirà il riferimento all’oggetto esistente. È quindi necessario creare un oggetto Engine separato per ogni processo richiamando la funzione InitializeEngine.
Per le implementazioni di ABBYY FineReader Engine per Windows su sistemi multi-processore, potrebbero risultare utili altri metodi di caricamento dell’oggetto Engine.
Non inizializzare e deinitializzare ABBYY FineReader Engine nei punti di ingresso di altre librerie dinamiche, né nei costruttori e distruttori di oggetti statici e globali implementati in librerie dinamiche, poiché questi vengono richiamati nei punti di ingresso delle librerie dinamiche.
L’utente deve inizializzare e deinitializzare ABBYY FineReader Engine in un contesto diverso, ad esempio nella funzione main o WinMain di un modulo eseguibile.
: In Windows, questa restrizione è dovuta al fatto che le funzioni Win32 LoadLibrary e FreeLibrary non sono rientranti.
Durante l’inizializzazione, ABBYY FineReader Engine reimposta l’impostazione LC_CTYPE ai valori predefiniti del sistema operativo. Questo aspetto deve essere tenuto in considerazione se l’applicazione dipende da servizi sensibili alle impostazioni locali (in particolare msvcrt.dll in Windows).Gli sviluppatori Windows che utilizzano .NET devono assicurarsi di specificare [STAThread] (modello apartment a thread singolo) come attributo sulla funzione principale dell’applicazione; in caso contrario, potrebbe verificarsi un errore:
[STAThread]public static void Main(){ ...}
Devi passare un Customer Project ID valido come parametro di input. Tuttavia, puoi scegliere la licenza da utilizzare per l’elaborazione chiamando il metodo SetCurrentLicense dell’oggetto Engine prima di eseguire qualsiasi metodo di elaborazione. Usa il metodo GetAvailableLicenses per esaminare l’elenco delle licenze attivate disponibili che puoi utilizzare e la proprietà CurrentLicense dell’oggetto Engine per verificare quale licenza è già selezionata.