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 requiring 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:
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 |
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:
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 |
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 |