![]() |
IOLink Python 1.11.0
|
IOLink is natively (C++) available for following compilers:
The .NET wrapping of IOLink is compiled for .NET Standard 2.0 and it should be compatible with all implementations of .NET that support this standard.
Packages are currently tested for:
There is a Python wrapping too, using the Python stable ABI to make the package compatible with versions 3.8.10 and after. Currently, IOlink Python is tested for all python versions between 3.8.10 and 3.12.
Here is an array which gives all compatibility for handled languages:
| Compilers | C++ | .NET Standard | Python |
|---|---|---|---|
| MSVC 15 | X | 2.0 | 3.8.10 - 3.12 |
| MSVC 16 | X | 2.0 | 3.8.10 - 3.12 |
| MSVC 17 | X | 2.0 | 3.8.10 - 3.12 |
| Ubuntu 20.04 gcc 9 | X | 2.0 | 3.8.10 - 3.12 |
| Ubuntu 22.04 gcc 11 | X | 2.0 | 3.10 - 3.12 |
| Ubuntu 24.04 gcc 13 | X | 2.0 | 3.12 |
| CentOS 8 gcc 8 | X |
IOLink is delivered as a PIP package for following platforms:
IOLink is only available for some versions of Python, depending of the platform. You can see all the supported versions in the previous table
Command to check your current installed python version:
IOLink installation requires pip module being installed. You can follow the installation steps here.
pip must be upgraded and configured as follows:
Then, you can install IOLink by simply writing this in your console:
In your code, the following line must be added to have access to IOLink functionalities:
As a reminder, there is an issue on Windows platforms concerning the management of DLLs from a library shared by many components of a unique application. You can find a good explanation of that problem on wikipedia.
IOLink purpose is to ease inter-operability between software components, and thus, can theorically be loaded by many components. The problem occurs when these components don't load the same version of IOLink. IOLink guarantees the binary-compatibility between two major versions. But some APIs can be added between two minor versions of IOLink, in the same major version. And if the component using the newest version of IOLink call one of these new APIs with the oldest version of the DLL, it will usually crash.
Thus, in a same software, if two components dynamically load two different versions of IOLink, there can be a issue even if these two versions are binary-compatible.
A solution is to always load the newest version of the library. By doing so, only one version of the DLL will be loaded and shared between all components.
IOLink provides some basic mechanisms which will help you to identify this issue:
Versioning method. In this case, a warning will be raised but won't block the execution.