Supported Platforms
The C++ edition of IPWorks IoT is provided as a set of libraries in a variety of packages. Each package is designed to best suit your development environment. The sections below provide further details on each supported platform.
Windows
Libraries for windows are provided as dll files. Additionally, the full version of the toolkit includes static libraries. The lib folder of the installation includes the 32-bit dll and static library. The lib64 folder of the installation includes the 64-bit dll and static library.
Static Library Notes
When using the static library, each component must be initialized and destroyed using its corresponding StaticInit and StaticDestroy method.
// Call StaticInit before using the component. Replace "ComponentName" with the appropriate class name. IPWorksIoT_ComponentName_StaticInit(0); // Call StaticDestroy after using the component. Replace "ComponentName" with the appropriate class name. IPWorksIoT_ComponentName_StaticDestroy();StaticInit should be called during application startup, before creating or interacting with any component instances. StaticDestroy should be called after all instances have been destroyed. It is important to ensure that these methods are called only once for each component. Multiple calls to the above methods may cause unexpected behavior.
Linux/Unix
Libraries for Linux are provided as compiled shared libraries (.so files). The lib folder of the installation includes the 32-bit .so file. The lib64 folder of the installation includes the 64-bit .so file.
Obfuscated Source Notes
The full version of the toolkit includes obfuscated source code. The src folder of the installation includes the source files. The obfuscated source code can be compiled with g++. For instance a makefile may look like:
mytarget: ipworksiot.o g++ -D UNIX -o myapp ipworksiot.o myapp.cpp -I../include/ -lz ipworksiot.o: g++ -c -fno-exceptions -fno-rtti -fPIC -o ipworksiot.o ipworksiot.cpp
The header files for the system compression library libz-dev must be present in the linker search path.
OpenSSL Notes
By default the Linux library does not rely on OpenSSL and uses an internal implementation for all SSL/TLS and other cryptographic functionality. Attempting to use the platform implementation by setting properties such as SSLProvider will result in an error.
To enable OpenSSL support within the toolkit the obfuscated source code can be compiled with the -D ENABLE_OPENSSL option. For instance a makefile may look like:
mytarget: ./src/ipworksiot.o g++ -D UNIX -o myapp ./src/ipworksiot.o myapp.cpp -I./include/ -ldl -lz -lssl -lcrypto ./src/ipworksiot.o: g++ -c -fno-exceptions -fno-rtti -fPIC -D ENABLE_OPENSSL -o ./src/ipworksiot.o ./src/ipworksiot.cpp
When enabled, the linker options for the project using the library must include -lssl -lcrypto. Note that components must still be configured to use the OpenSSL implementation by setting the SSLProvider property to 1 (Platform).
macOS
The library for macOS is provided as a dynamic library (.dylib file). The lib64 folder of the installation includes the .dylib file. In the full version, the src folder contains the obfuscated source code and corresponding makefile.
Obfuscated Source Notes
The full version of the toolkit includes obfuscated source code. The src folder of the installation includes the source files. The obfuscated source code can be compiled with g++. For instance a makefile may look like:
mytarget: ipworksiot.o g++ -D UNIX -arch arm64 -o myapp ipworksiot.o myapp.cpp -lz libresolv.dylib ipworksiot.o: g++ -c -fno-exceptions -fno-rtti -fPIC -arch arm64 -o ipworksiot.o ipworksiot.cpp -framework Carbon -framework Security
The header files for the system compression library libz-dev must be present in the linker search path.
Qt
The installation directory contains an include\qt folder with header files which allow the components to be used in Qt. To use the components in Qt Creator first navigate to the Projects menu, then the Add Library option and finally select the External Library option. Browse to the ipworksiot22.lib file within the lib or lib64 folder. Ensure the Add 'd' suffix for debug version is unchecked.
Then, add the header file of the component to be used under the HEADERS variable in the .pro file. The HEADERS variable will look something like this: HEADERS += C:\My\Install\Path\include\qt\qhttp.h . Note that the path should contain no spaces.
Finally, the header for the desired components can then be added in code. For instance: #include "C:\My\Install\Path\include\qt\qhttp.h"