Alternate linking of RecAPI

The KernelAPI and RecAPIPlus interfaces use dynamic linking. This means all required DLL files are loaded at initialization time. It also requires all DLL files to be placed at a known location. The CSDK searches them using the Standard Windows Search Order. The program and its DLL files need to be located at a predetermined path. It may constrain the distribution of the integrating application. The KernelAPIS and RecAPIPlusS modules solve this problem. These are thin interface layers for binding the Engine at run-time. They load KernelAPI or RecAPIPlus from a path specified in the initialization function and get all the entry points of the required DLL files. The actual Engine load happens when kRecInitS or kRecInitPlusS is called. Other DLL files are loaded when a function, that requires their services, is called.

Since these modules are wrappers on the corresponding modules KernelAPI and RecAPIPlus, they make it possible to separate the integrating application from the files of the CSDK without placing the CSDK folder into the PATH environment variable. That makes the application less vulnerable to processing issues raised by the CSDK, and avoids the risk of identically named program files in the application and the CSDK.

Depending on how the release or debug versions of the integrating application use the C run-time libraries, one of the following small KernelAPIS or RecAPIPlusS static libraries should be linked to the application:

Table 1. Release version of KernelAPIS

KrnAPIS.LIB

single-threaded C run-time library

statically linked

KrnAPIS_MS.LIB

multi-threaded C run-time library

statically linked

KrnAPIS_MDyn.LIB

multi-threaded C run-time library

dynamically linked

Table 2. Release version of RecAPIPlusS

RecAPIPlusS.LIB

single-threaded C run-time library

statically linked

RecAPIPlusS_MS.LIB

multi-threaded C run-time library

statically linked

RecAPIPlusS_MDyn.LIB

multi-threaded C run-time library

dynamically linked

The debug version of the integrating application requires a static library to be linked as follows:

Table 3. Debug version of KernelAPIS

KrnAPISd.LIB

single-threaded C run-time library

statically linked

KrnAPIS_MSd.LIB

multi-threaded C run-time library

statically linked

KrnAPIS_MDynd.LIB

multi-threaded C run-time library

dynamically linked

Table 4. Release version of RecAPIPlusS

RecAPIPlusSd.LIB

single-threaded C run-time library

statically linked

RecAPIPlusS_MSd.LIB

multi-threaded C run-time library

statically linked

RecAPIPlusS_MDynd.LIB

multi-threaded C run-time library

dynamically linked