Supported Library and IDE
WMX3 provides VC++ static libraries, .NET libraries (for C#, VB.NET, etc.), C++ Builder static libraries, and Python libraries.
Overview
VC++ Static Libraries
VC+ static libraries is the main library supported by WMX3. When creating a VC++ compiled application (for example MFC, Native C++ console application, C+/CX applicaion) using C++ language, link the native API library (.lib), then send a command to the WMX3 engine by calling a function in this library.
Almost all of the functions in the C++ libraries are also available in the .NET libraries. A few specialized functions are not available. Languages such as C#, VB.NET, and C++/CLI that run on the .NET framework can be used (.NET framework 4.5 or higher is required to work). The interface of the .NET libraries is made to be as similar to the C++ libraries as possible. For example, all function names and parameter names are kept the same. As such, .NET developers can refer to the API Reference for C++. However, there are some differences that are caused by differences in the language specifications. The differences between the .NET and C++ libraries are explained in C++ and .NET Library Differences.
All of the functions in the C++ libraries are available in the C++ Builder libraries.
Almost all of the functions in the C++ module libraries are available in the Python library. The some functions in the C++ platform libraries are available in the Python library. For more information, see PythonAPI Function Correspondence Table. To use the Python library, the Microsoft Visual C++ 2015 Redistributable must be installed.
Key Supported Matrix
In general, the version of the compiler that can compile a library containing an API that is an interface to WMX3 is equal to or newer than the version from which the library was compiled.
The exception is the python library, which depends on a specific interpreter version.
Although only VC++ native libraries can be linked to RTX SDK real-time libraries, other libraries can also perform real-time behavior from non-real-time space by taking advantage of event functions and the many modules provided.
VC++ Static Libraries |
.NET Libraries |
C++ Builder Static Libraries |
Python Libraries |
|
|---|---|---|---|---|
VC++ 2012 and higher |
.NET 4.0 and higher |
XE7 and higher |
python 3.6 only |
|
Microsoft Visual Studio 2012 or later |
Microsoft Visual Studio 2012 or later |
C++ Builder XE7 or later |
Any Python IDEs |
|
x64:Supported x86:Supported |
x64:Supported x86:Supported |
x64:Supported x86:Supported |
x64:Supported x86:Not supported |
|
WMX3 libraries that can be linked from RTX applications built to run in real-time space using the RTX SDK API are limited to VC++ libraries. When compiling a user application as a real-time application (.rtss), must be linked instead of . is not required to run RTX applications. Also see Support for user application development running only on a real-time OS and Tutorial 6: Applications Using the RTX SDK. |
||||
.lib(x64): .lib(x86): .h: |
.dll(x64): .dll(x86): |
.a(x64): .lib(x86): .h: |
.py/.pyd(x64): |
|
List of Libraries
The following table summarizes the main VC++ static libraries of WMX3.
Some libraries may be separated from the standard product as optional patches or optional features.
Windows Library |
RTX Library |
|||
|---|---|---|---|---|
Library |
Header File |
Static Library |
Dynamic Library |
Static Library |
- |
IMDll.lib (Import library of IMDll.dll) |
IMDll.dll |
IMDLL_RT.lib |
|
WMX3Api.h |
WMX3Api.lib |
- |
WMX3Api.lib |
|
CoreMotionApi.h |
CoreMotionApi.lib |
- |
CoreMotionApi.lib |
|
LogApi.h |
LogApi.lib |
- |
LogApi.lib |
|
ApiBufferApi.h |
ApiBufferApi.lib |
- |
ApiBufferApi.lib |
|
CyclicBufferApi.h |
CyclicBufferApi.lib |
- |
CyclicBufferApi.lib |
|
CompensationApi.h |
CompensationApi.lib |
- |
CompensationApi.lib |
|
IOApi.h |
IOApi.lib |
- |
IOApi.lib |
|
EventApi.h |
EventApi.lib |
- |
EventApi.lib |
|
AdvancedMotionApi.h |
AdvancedMotionApi.lib |
- |
AdvancedMotionApi.lib |
|
UserMemoryApi.h |
UserMemoryApi.lib |
- |
UserMemoryApi.lib |
|
PMMotionApi.h |
PMMotionApi.lib |
- |
PMMotionApi.lib |
|
CoordinateApi.h |
CoordinateApi.lib |
- |
CoordinateApi.lib |
|
KinematicsApi.h |
KinematicsApi.lib |
- |
KinematicsApi.lib |
|
RBC_Api.h |
RBC_Api.lib |
- |
RBC_Api.lib |
|
ForceControlApi.h |
ForceControlApi.lib |
- |
ForceControlApi.lib |
|
EcApi.h |
EcApi.lib, EcApi_Win.lib |
- |
EcApi.lib |
|
RtexApi.h |
RtexApi.lib |
- |
RtexApi.lib |
|
MIIIApi.h |
MIIIApi.lib |
- |
MIIIApi.lib |
|
M4Api.h |
M4Api.lib |
- |
M4Api.lib |
|
CCLinkApi.h |
CCLinkApi.lib |
- |
CCLinkApi.lib |
|
SimuApi.h |
SimuApi.lib |
- |
SimuApi.lib |
|
The following table summarizes the additional libraries (.NET libraries (for C#, VB.NET, etc.), C++ Builder static libraries, and Python libraries) of WMX3.
Some libraries may be separated from the standard product as optional patches or optional features.
Windows Library |
||||
|---|---|---|---|---|
Library |
.NET Library |
C++ Builder (32-bit) |
C++ Builder (64-bit) |
Python Library |
IMDll.lib is already statically included on the library side. |
IMDll.lib (Import library of IMDll.dll) |
IMDll.a (Import library of IMDll.dll) |
IMDll.lib is already statically included on the library side. |
|
WMX3Api_CLRLib.dll |
WMX3Api.lib |
WMX3Api.a |
_WMX3ApiPython.pyd, WMX3ApiPython.py |
|
CoreMotionApi_CLRLib.dll |
CoreMotionApi.lib |
CoreMotionApi.a |
||
LogApi_CLRLib.dll |
LogApi.lib |
LogApi.a |
||
ApiBufferApi_CLRLib.dll |
ApiBufferApi.lib |
ApiBufferApi.a |
||
CyclicBufferApi_CLRLib.dll |
CyclicBufferApi.lib |
CyclicBufferApi.a |
||
CompensationApi_CLRLib.dll |
CompensationApi.lib |
CompensationApi.a |
||
IOApi_CLRLib.dll |
IOApi.lib |
IOApi.a |
||
EventApi_CLRLib.dll |
EventApi.lib |
EventApi.a |
||
AdvancedMotionApi_CLRLib.dll |
AdvancedMotionApi.lib |
AdvancedMotionApi.a |
||
UserMemoryApi_CLRLib.dll |
UserMemoryApi.lib |
UserMemoryApi.a |
||
PMMotionApi_CLRLib.dll |
PMMotionApi.lib |
PMMotionApi.a |
Not Supported |
|
CoordinateApi_CLRLib.dll |
- |
- |
||
KinematicsApi_CLRLib.dll |
- |
- |
||
RBC_ApiCLR.dll |
- |
- |
||
ForceControlCLRApi.dll |
- |
- |
||
EcApi_CLRLib.dll |
EcApi.lib |
EcApi.a |
_WMX3ApiPython.pyd, WMX3ApiPython.py (Partially Supported) |
|
RtexApi_CLRLib.dll |
RtexApi.lib |
RtexApi.a |
Not Supported |
|
MIIIApi_CLRLib.dll |
MIIIApi.lib |
MIIIApi.a |
||
M4Api_CLRLib.dll |
M4Api.lib |
M4Api.a |
||
CCLinkApi_CLRLib.dll |
CCLinkApi.lib |
CCLinkApi.a |
_WMX3ApiPython.pyd, WMX3ApiPython.py (Partially Supported) |
|
SimuApi_CLRLib.dll |
SimuApi.lib |
SimuApi.a |
Not Supported |
|
IMPORTANT:Except when linking with , should be stored in the same directory where the user application is loaded.
Individual Precautions and Support Specifications
To use the Python libraries, the Microsoft Visual C++ 2015 Redistributable must be installed.
To use the VC++ static libraries, the Microsoft Visual C++ 2012 Redistributable must be installed.
To use the .NET libraries, the Microsoft .NET framework 4.5 or higher must be installed.
To use the Visual Studio for compiling the RTX application using WMX3, please follow the Visual Studio version supported by the RTX SDK.
For example:
To use the Visual Studio 2012 for compiling the RTX application using WMX3, Visual Studio 2012 Update1 or higher must be installed.
To use the Visual Studio 2013 for compiling the RTX application using WMX3, Visual Studio 2013 Update5 or higher must be installed.
To use the Visual Studio 2017 for compiling the RTX application using WMX3, Visual Studio 2017 v15.9 or higher must be installed.
For additional information, please refer to the following technical note of IntervalZero (the developer of RTX).
To use the Visual Studio for compiling the RTX application using WMX3, please follow the Visual Studio Compile and Linker Options required by the RTX SDK.
For additional information, please refer to the following technical notes of IntervalZero (the developer of RTX) and this document.
Support for user application development running only on a real-time OS
To use the Visual Studio 2015 or later for the development using WMX3 VC++ static libraries, following Microsoft libraries must also be linked:
legacy_stdio_definitions.lib
legacy_stdio_wide_specifiers.lib
Failing to link these libraries may result in a linker error. To link these libraries, open the Project menu, select …Properties, navigate to “Configuration Properties\Linker\Input”, and enter these libraries in the semicolon separated list next to Additional Dependencies.
To use Visual Studio 2022 v17.7.3 or later for compiling the RTX application using WMX3 VC++ static libraries, you may need to add the following option to “Configuration Properties\C/C++\Command Line” to prevent linker errors due to the use of SRW locks that are not supported by RTX
/Zc:threadSafeInit-
For additional information, please refer to the following technical notes of IntervalZero (the developer of RTX) and this document.
http://softservo.com/pub/RTX_Doc/RTX64/TechNote/Unresolved_Linker_Errors_in_Visual_Studio_2022.pdf
To use the the Debugger with 32-bit Windows in the Visual Studio, please note the following.
Because of an architectural incompatibility, when using the Visual Studio debugger to debug a user application that uses the WMX3 libraries on a 32-bit Windows operating system, the CoreMotion, Log, Io, UserMemory, and CyclicBuffer classes must not be repeatedly created and deleted. Under the above conditions, creating and deleting these classes will result in a handle leak, and a system exception will occur if approximately 65536 handles are created. This problem only occurs when using 32-bit Windows with 32-bit versions of the RTX operating system. This problem does not need to be considered when using the WMX3 library with 64-bit Windows operating systems or the RTX64 real time operating system.