...
First of all, you must include the required header, lmx.h, located in the include directory of your SDK.
Panelcode |
---|
#include "lmx.h" |
If your project and LM-X SDK are in separate directories, remember to specify the include directory for your compiler. For example:
GCC:
Panel |
---|
gcc -I /usr/lmx-sdk-4.6.1/include/ |
MSCV:
Panel |
---|
cl /I “C:\Program Files\X-Formation\LM-X SDK v4.6.1 win64_x64\include\” |
Commonly used functions
In the following examples we will present five commonly used LM-X API functions.
...
The LMX_Init function initializes the protection system. This function creates a handle needed to use other LM- X API functions. It returns LMX_STATUS variable that indicates initialization status.
No Formatcode |
---|
LMX_STATUS LMX_Init(LMX_HANDLE *p) |
No Formatcode |
---|
LMX_HANDLE LmxHandle; if (LMX_Init(&LmxHandle) != LMX_SUCCESS) { printf("Unable to initialize!\n"); return 1; } LMX_STATUS LMX_SetOption(LMX_HANDLE LmxHandle, LMX_SETTINGS eOption, const void *pSetting); |
...
The following example presents using LMX_SetOption to set the path to a license file.
No Formatcode |
---|
LMX_SetOption(LmxHandle, LMX_OPT_LICENSE_PATH, "."); |
...
The LMX_Checkout function is one of the most important LMX API functions, because it checks out one or more licenses for a specific feature. This type of function requires that the feature name, version and the count of the features be defined as shown below.
No Formatcode |
---|
LMX_STATUS LMX_Checkout(LMX_HANDLE LmxHandle, const char *szFeatureName, int nVerMajor, int nVerMinor, int nCount); |
For example:
No Formatcode |
---|
if (LMX_Checkout(LmxHandle, "feature", 1, 0, 1) != LMX_SUCCESS) { printf("Unable to checkout\n"); LMX_Free(LmxHandle); return 1; } |
...
The LMX_Checkin function returns the licenses for a single checked out feature or all checked out features.
No Formatcode |
---|
LMX_STATUS LMX_Checkin(LMX_HANDLE LmxHandle, const char *szFeatureName, int nCount); |
LMX_Free
The LMX_Free function, which has an inverse effect to LMX_Init, frees any allocated memory used by the licensing system and closes any open connection to a license server.
No Formatcode |
---|
void LMX_Free(LMX_HANDLE h) |
The following example illustrates a basic example of an LM-X licensed application.
Panelcode |
---|
#include <stdio.h> #include #include "lmx.h" int int main() { LMX{ LMX_HANDLE LmxHandle; if if (LMX_Init(&LmxHandle) != LMX_SUCCESS) { printf{ printf("Unable to initialize!\n");return return 1; } } // Look for licenses in current directory.LMX LMX_SetOption(LmxHandle, LMX_OPT_LICENSE_PATH, ".");if if (LMX_Checkout(LmxHandle, "feature", 1, 0, 1) != LMX_SUCCESS) { printf{ printf("Unable to checkout!\n");LMX LMX_Free(LmxHandle);return return 1; } } // Here you are safe to run your licensedfeatures run features run_my_features(); LMX LMX_Checkin(LmxHandle, "feature", LMX_ALL_LICENSES);LMX LMX_Free(LmxHandle);return return 0; } |
You should save this as an example.c. What do you mean by that?
Running the application is straightforward and involves the following steps:
To run run an LM-X licensed application:
...
To compile your first program run the following:
GCC:
Panelcode |
---|
gcc -c -pthread -fPIC -Wall -Werror -fno-strict-aliasing -m64 -Wfatal-errors -Wno-unused-local-typedefs -Wno-vla -Wno-attributes -O2 -c -O2 -I/usr/lmx-sdk-4.6.1/include/ example.c gcc gcc -static-libgcc -o local local.o /usr/lmx-sdk-4.6.1/linux_x64/liblmxclient.a -pthread -lrt -ldl |
MSVC:
Code Blockpanel |
---|
cl /WX /MT /c /O2 -D_CRT_SECURE_NO_DEPRECATE /I“C "C:\Program Files\X-Formation\LM-X SDK v4.6.1 win64_x64\include\” " example.c link link /WX /opt:noref example.obj“C "C:\Program Files\X-Formation\LM-X SDK v4.6.1 win64_x64\win64_x64\liblmxclient_mt.lib” lib" |
Running your application
Now you should have the following files in your current directory:
...