Chapter 9 Windows Platforms

This release supports the Windows platforms in Table 9.1 .

Table 9.1 Supported Windows Platforms in Connext 7.3.0 LTS

CPU

Visual Studio® Version

RTI Architecture

Supported Target OS

Minimum MSVC++ Redistributable

.NET Version

JDK Version

x64

VS 2017 Update 2,

VS 2019,

VS 2022

x64Win64VS2017

Windows 10, 11

Windows Server 2012 R2 - 2022

Microsoft Visual C++ Redistributable for Visual Studio 2017 for x64

.NET Standard 2.0

AdoptOpenJDK 17.0.6

Arm v8

VS 2022

arm64Win64VS2022

Windows 11

Microsoft Visual C++ Redistributable for Visual Studio 2022 for Arm v8

The following rows show custom-supported target platforms, only available on demand.

Please contact your RTI sales representative or sales@rti.com for more information on using these platforms:

x64

VS 2015 Update 3

x64Win64VS2015

(Custom support)

Windows 10

Windows Server 2012 R2 - 2022

Microsoft Visual C++ 2015 Redistributable Update 3 for x64

.NET Standard 2.0

AdoptOpenJDK 17.0.6

x86

VS 2015 Update 3

i86Win32VS2015

(Custom support)

Windows 10

Windows Server 2016

Microsoft Visual C++ 2015 Redistributable Update 3 for x86

VS 2017 Update 2,

VS 2019

i86Win32VS2017

(Custom support)

Microsoft Visual C++ 2017 Redistributable Update 3 for x86

For a list of Windows OS versions supported by your Visual Studio version, please see official Microsoft documentation.

Note regarding C# API Support: The C# API is supported on Windows 10 systems, but it doesn't support Visual Studio 2015 for development. Development is supported on Visual Studio 2017 or newer, Visual Studio Code, and the .NET command-line interface. For more information on .NET, see the Connext C# API Reference.

9.1 Building Applications for Windows Platforms

Before starting to build your Connext application, make sure that:

  • A supported version of Visual Studio is installed on the machine you are using to build your application (see Table 9.1 above), and you have installed a valid SDK for your target platform.
  • You have installed Connext and an RTI architecture package that supports your desired target platform on the build machine. You can find more instructions in the RTI Connext Getting Started Guide.

    Note for Windows on Arm architectures: There is no Arm64 host installer. If you want to link your application against the dynamic version of the Connext libraries, you will need to install the x64 host and the target package on the target machine, or manually copy to the target the Connext installation folder with the desired libraries installed.

9.2 Configuring the Build of Your Connext Application

To compile a Hello World application with Connext, we recommend starting with one of the VS Project examples provided with Connext or generating an example using RTI Code Generator (rtiddsgen).

If you want to create your own project files from scratch, or build your application without using a project file, follow these steps:

  1. Set up your build environment following the basic instructions in Chapter 2 Building Applications—Notes for All Platforms
  2. Add the path to your Connext installation folder to a environment variable called NDDSHOME:
    set NDDSHOME=<Path to your connext installation folder>
  3. Include these additional include directories (/I)
    • $(NDDSHOME)\include
    • $(NDDSHOME)\include\ndds
  4. Include the following path in your PATH environment variable or as an additional Libpath (/LIBPATH):
    • $(NDDSHOME)\lib<architecture>
  5. Link against the Windows C Run-Time Libraries. All Connext libraries must link against the dynamic Windows C Run-Time (CRT).
    1. Specify the runtime library to use, based on the Connext library version you want to link against:
      • If you are using a Release version: Multithread-specific and DLL-specific (/MD)
      • If you are using a Debug version: Multithread-specific and DLL-specific debug (/MDd)
    1. Remove the following default libraries from the list of libraries to be searched for when resolving external references: (/NODEFAULTLIB)
      • libcmtd
      • libcmt
  1. If you want to use the MFC library in you application, you must link against the dynamic version. (If you use the static version, your Connext application may stop receiving DDS samples once the Windows sockets are initialized.)
  2. Specify that the linker should use the required RTI and system libraries, and the compiler flags from Table 9.2 Building Instructions for Windows Architectures , depending on the version of the libraries you plan to link against. Make sure you are consistent in your use of static (.lib), dynamic (.dll), debug and release versions of the libraries. Do not link both static and dynamic libraries. Similarly, do not mix release and debug libraries.

Table 9.2 Building Instructions for Windows Architectures

API

Library

Format

RTI Libraries

or Jar Files12

Required

System Libraries

Required

Compiler Flags

C

Static

Release

nddscorez.lib

nddscz.lib

rticonnextmsgcz.lib

netapi32.lib

advapi32.lib

user32.lib

ws2_32.lib

WIN32_LEAN_AND_MEAN WIN32

 

If linking against dynamic RTI libraries, add NDDS_DLL_VARIABLE

If linking against a static RTI libraries and using the RTI Security Plugins, add RTI_STATIC

Static

Debug

nddscorezd.lib

nddsczd.lib

rticonnextmsgczd.lib

Dynamic

Release

nddscore.lib

nddsc.lib

rticonnextmsgc.lib

Dynamic

Debug

nddscored.lib

nddscd.lib

rticonnextmsgcd.lib

C++

(Traditional

and

Modern APIs)

Static

Release

nddscorez.lib

nddscz.lib

nddscppz.lib

or

nddscpp2z.lib

rticonnextmsgcppz.lib

or

rticonnextmsgcpp2z.lib

netapi32.lib

advapi32.lib

user32.lib

ws2_32.lib

WIN32_LEAN_AND_MEAN WIN32

 

If linking against dynamic RTI libraries, add NDDS_DLL_VARIABLE

If linking against a static RTI libraries and using the RTI Security Plugins, add RTI_STATIC

Static

Debug

nddscorezd.lib

nddsczd.lib

nddscppzd.lib

or

nddscpp2zd.lib

rticonnextmsgcppzd.lib

or

rticonnextmsgcpp2zd.lib

Dynamic

Release

nddscore.lib

nddsc.lib

nddscpp.lib

or

nddscpp2.lib

rticonnextmsgcpp.lib

or

rticonnextmsgcpp2.lib

Dynamic

Debug

nddscored.lib

nddscd.lib

nddscppd.lib

or

nddscpp2d.lib

rticonnextmsgcppd.lib

or

rticonnextmsgcpp2d.lib

Java

Release

nddsjava.jar

rticonnextmsg.jar

N/A

N/A

Debug

nddsjavad.jar

rticonnextmsgd.jar

9.2.1 Additional Libraries for Other Features

9.2.1.1 Libraries Required for Distributed Logger

RTI Distributed Logger is supported on all Windows platforms. Table 9.3 Additional Libraries for using RTI Distributed Logger lists the additional libraries you will need to use Distributed Logger.

Table 9.3 Additional Libraries for using RTI Distributed Logger

Language

Static3

Dynamic4

Release

Debug

Release

Debug

C

rtidlcz.lib

rtidlczd.lib

rtidlc.lib

rtidlc.dll

rtidlcd.lib

rtidlcd.dll

C++

(Traditional API)

rtidlcz.lib

rtidlcppz.lib

rtidlczd.lib

rtidlcppzd.lib

rtidlc.lib

rtidlc.dll

rtidlcpp.lib

rtidlcpp.dll

rtidlcd.lib

rtidlcd.dll

rtidlcppd.lib

rtidlcppd.dll

Java

N/A

N/A

distlog.jar

distlogdatamodel.jar

distlogd.jar

distlogdatamodeld.jar

9.2.1.2 Libraries Required for Monitoring

To use the Monitoring APIs, reference the libraries in Table 9.4 Additional Libraries for Using Monitoring.

Make sure you are consistent in your use of static, dynamic, debug and release versions of the libraries. For example, if your Connext application is linked with the static release version of the Connext libraries, you will need to also use the static release version of the monitoring library. Do not link both static and dynamic libraries. Similarly, do not mix release and debug libraries.

If you are statically linking your application with DDS libraries and you want to add monitoring to your application, you will also need to statically link the monitoring library. The library cannot be loaded dynamically strictly through the QoS profile because it also depends on DDS to publish its data. Therefore, it depends on DDS; the DDS functionality would cause duplicate symbols to be found, causing the process to terminate.

Table 9.4 Additional Libraries for Using Monitoring

Library Format

Monitoring Libraries5

Dynamic Release

rtimonitoring.lib

rtimonitoring.dll

Dynamic Debug

rtimonitoringd.lib

rtimonitoringd.dll

Static Release

rtimonitoringz.lib

Psapi.lib

Static Debug

rtimonitoringzd.lib

Psapi.lib

9.2.1.3 Libraries Required for Real-Time WAN Transport

If you choose to use Real-Time WAN Transport, you must download and install a separate package that contains the transport libraries. See the RTI Real-Time WAN Transport Installation Guide for details.

Using Real-Time WAN Transport requires one of the libraries in 9.2.1 Additional Libraries for Other Features. Select the file appropriate for your chosen library format.

For more information, see Enabling Real-Time WAN Transport, in the RTI Connext Core Libraries User's Manual.

Table 9.5 Additional Libraries for Using Real-Time WAN Transport APIs

Library Format

Real-Time WAN Transport Libraries6

Dynamic Release

nddsrwt.lib

nddsrwt.dll

Dynamic Debug

nddsrwtd.lib

nddsrwtd.dll

Static Release

nddsrwtz.lib

Static Debug

nddsrwtzd.lib

For details on the OpenSSL libraries, see 9.2.3 Location of OpenSSL Libraries.

9.2.1.4 Libraries Required for RTI TCP Transport

To use the TCP Transport APIs, reference the libraries in Table 9.6 Additional Libraries for Using RTI TCP Transport APIs.

Table 9.6 Additional Libraries for Using RTI TCP Transport APIs

Library Format

RTI TCP Transport Libraries7

Dynamic Release

nddstransporttcp.lib

nddstransporttcp.dll

Dynamic Debug

nddstransporttcpd.lib

nddstransporttcpd.dll

Static Release

nddstransporttcpz.lib

Static Debug

nddstransporttcpzd.lib

If you are also using RTI TLS Support, see Table 9.7 Additional Libraries for using RTI TCP Transport APIs with TLS Enabled. (Select the files appropriate for your chosen library format.)

Table 9.7 Additional Libraries for using RTI TCP Transport APIs with TLS Enabled

Library Format

RTI TLS Libraries8

OpenSSL Libraries

System Libraries

Dynamic Release

nddstls.lib

nddstls.dll

libssl.lib

libssl-<version>.dll

libcrypto.lib

libcrypto-<version>.dll

(none)

Dynamic Debug

nddstlsd.lib

nddstlsd.dll

Static Release

nddstlsz.lib

libsslz.lib

libcryptoz.lib

crypt32.lib

Static Debug

nddstlszd.lib

For details on the OpenSSL libraries, see 9.2.3 Location of OpenSSL Libraries.

9.2.1.5 Libraries Required for Zero Copy Transfer Over Shared Memory

To use the Zero Copy Transfer Over Shared Memory feature, reference the libraries in Table 9.8 Additional Libraries for Zero Copy Transfer Over Shared Memory.

Table 9.8 Additional Libraries for Zero Copy Transfer Over Shared Memory

Library Format

Zero Copy Transfer Over Shared Memory Libraries9

Dynamic Release

nddsmetp.lib

nddsmetp.dll

Dynamic Debug

nddsmetpd.lib

nddsmetpd.dll

Static Release

nddsmetpz.lib

Static Debug

nddsmetpzd.lib

9.2.2 How the Connext Libraries were Built

Table 9.9 Library-Creation Details for Windows Architectures shows the compiler flags that RTI used to build the Connext libraries. This is provided strictly for informational purposes; you do not need to use these parameters to compile your application. You may find this information useful if you are involved in any in-depth debugging.

The details for building user applications are in 9.1 Building Applications for Windows Platforms.

Table 9.9 Library-Creation Details for Windows Architectures

RTI Architecture

Library

Format

Compiler Flags Used by RTI

arm64Win64VS2022

Static

Release

-D_WIN32_WINNT=0x0600 -D_WINDOWS -D_CRT_SECURE_NO_DEPRECATE -DWIN32

-DWIN32_LEAN_AND_MEAN -DCOMPILED_FROM_DSP -DSTDC99 /W3 /Oy- /MD /O2 /Ob0

/DNDEBUG /nodefaultlib:libc.lib /nodefaultlib:libcd.lib /defaultlib:Winmm.lib /we4013

Static

Debug

-D_WIN32_WINNT=0x0600 -D_WINDOWS -D_CRT_SECURE_NO_DEPRECATE -DWIN32

-DWIN32_LEAN_AND_MEAN -DCOMPILED_FROM_DSP -DSTDC99 /W3 /Oy- /MDd /Zi /Ob0

/Od /RTC1 /nodefaultlib:libc.lib /nodefaultlib:libcd.lib /defaultlib:Winmm.lib /we4013

Dynamic

Release

-D_WIN32_WINNT=0x0600 -D_WINDOWS -D_CRT_SECURE_NO_DEPRECATE -DWIN32

-DWIN32_LEAN_AND_MEAN -DCOMPILED_FROM_DSP -DSTDC99 /W3 /Oy- /MD /O2 /Ob0

/DNDEBUG /we4013

Dynamic

Debug

-D_WIN32_WINNT=0x0600 -D_WINDOWS -D_CRT_SECURE_NO_DEPRECATE -DWIN32

-DWIN32_LEAN_AND_MEAN -DCOMPILED_FROM_DSP -DSTDC99 /W3 /Oy- /MDd /Zi /Ob0

/Od /RTC1 /we4013

i86Win32VS2015

Static

Release

/W3 -DSTDC99 /FS -DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=I80586 -DTARGET=\"x86Win32VS2015\"

-DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0600 -DWIN32_LEAN_AND_MEAN /O2 /Oy- /Zi /MD /nodefaultlib:"libcmt.lib" /defaultlib:"msvcrt.lib" /EHsc -D_CRT_SECURE_NO_DEPRECATE -DNDEBUG -c /we4013

Static

Debug

/W3 -DSTDC99 -DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=I80586 -DTARGET=\"x86Win32VS2015\"

-DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0600 -DWIN32_LEAN_AND_MEAN /Od /ZI /MDd

/nodefaultlib:"libcmtd.lib" /defaultlib:"msvcrtd.lib" /EHsc /RTC1 -D_CRT_SECURE_NO_DEPRECATE -c /we4013

Dynamic

Release

/W3 -DSTDC99 -DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=I80586 -DTARGET=\"x86Win32VS2015\"

-DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0600 -DWIN32_LEAN_AND_MEAN /O2 /Oy- /Zi /MD /EHsc

-D_CRT_SECURE_NO_DEPRECATE -DNDEBUG -c /we4013

Dynamic

Debug

/W3 -DSTDC99 -DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=I80586 -DTARGET=\"x86Win32VS2015\"

-DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0600 -DWIN32_LEAN_AND_MEAN /Od /ZI /MDd /EHsc /RTC1

-D_CRT_SECURE_NO_DEPRECATE -c /we4013

i86Win32VS2017

Static

Release

/W3 -DSTDC99 /FS -DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=I80586 -DTARGET=\"x86Win32VS2017\"

-DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0600 -DWIN32_LEAN_AND_MEAN /O2 /Oy- /Zi /MD /nodefaultlib:"libcmt.lib" /defaultlib:"msvcrt.lib" /EHsc -D_CRT_SECURE_NO_DEPRECATE -DNDEBUG -c /we4013

Static

Debug

/W3 -DSTDC99 /FS -DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=I80586 -DTARGET=\"x86Win32VS2017\"

-DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0600 -DWIN32_LEAN_AND_MEAN /Od /ZI /MDd /nodefaultlib:"libcmtd.lib" /defaultlib:"msvcrtd.lib" /EHsc /RTC1 -D_CRT_SECURE_NO_DEPRECATE -c /we4013

Dynamic

Release

/W3 -DSTDC99 /FS -DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=I80586 -DTARGET=\"x86Win32VS2017\"

-DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0600 -DWIN32_LEAN_AND_MEAN /O2 /Oy- /Zi /MD /EHsc

-D_CRT_SECURE_NO_DEPRECATE -DNDEBUG -c /we4013

Dynamic

Debug

/W3 -DSTDC99 /FS -DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=I80586 -DTARGET=\"x86Win32VS2017\"

-DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0600 -DWIN32_LEAN_AND_MEAN /Od /ZI /MDd /EHsc /RTC1

-D_CRT_SECURE_NO_DEPRECATE -c /we4013

x64Win64VS2015

Static

Release

/W3 -DSTDC99 /FS -DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=AMD64

-DTARGET=\"x64Win64VS2015\" -DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0600

-DWIN32_LEAN_AND_MEAN /O2 /Zi /MD /nodefaultlib:"libcmt.lib" /defaultlib:"msvcrt.lib"

/EHsc -D_CRT_SECURE_NO_DEPRECATE -DNDEBUG -c /we4013

Static

Debug

/W3 -DSTDC99 /FS -DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=AMD64

-DTARGET=\"x64Win64VS2015\" -DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0600

-DWIN32_LEAN_AND_MEAN /Od /ZI /MDd /nodefaultlib:"libcmtd.lib" /defaultlib:"msvcrtd.lib"

/EHsc /RTC1 -D_CRT_SECURE_NO_DEPRECATE -c /we4013

Dynamic

Release

/W3 -DSTDC99 /FS -DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=AMD64

-DTARGET=\"x64Win64VS2015\" -DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0600

-DWIN32_LEAN_AND_MEAN /O2 /Zi /MD /EHsc -D_CRT_SECURE_NO_DEPRECATE

-DNDEBUG -c /we4013

Dynamic

Debug

/W3 -DSTDC99 /FS -DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=AMD64

-DTARGET=\"x64Win64VS2015\" -DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0600

-DWIN32_LEAN_AND_MEAN /Od /ZI /MDd /EHsc /RTC1

-D_CRT_SECURE_NO_DEPRECATE -c /we4013

x64Win64VS2017

Static

Release

/W3 -DSTDC99 /FS -DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=AMD64

-DTARGET=\"x64Win64VS2017\" -DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0600

-DWIN32_LEAN_AND_MEAN /O2 /Zi /MD /nodefaultlib:"libcmt.lib" /defaultlib:"msvcrt.lib"

/EHsc -D_CRT_SECURE_NO_DEPRECATE -DNDEBUG -c /we4013

Static

Debug

/W3 -DSTDC99 /FS -DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=AMD64

-DTARGET=\"x64Win64VS2017\" -DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0600

-DWIN32_LEAN_AND_MEAN /Od /ZI /MDd /nodefaultlib:"libcmtd.lib" /defaultlib:"msvcrtd.lib"

/EHsc /RTC1 -D_CRT_SECURE_NO_DEPRECATE -c /we4013

Dynamic

Release

/W3 -DSTDC99 /FS -DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=AMD64

-DTARGET=\"x64Win64VS2017\" -DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0600

-DWIN32_LEAN_AND_MEAN /O2 /Zi /MD /EHsc -D_CRT_SECURE_NO_DEPRECATE

-DNDEBUG -c /we4013

Dynamic

Debug

/W3 -DSTDC99 /FS -DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=AMD64

-DTARGET=\"x64Win64VS2017\" -DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0600

-DWIN32_LEAN_AND_MEAN /Od /ZI /MDd /EHsc /RTC1

-D_CRT_SECURE_NO_DEPRECATE -c /we4013

Windows

architectures for Java

Dynamic

Release

-target 1.8 –source 1.8

Dynamic

Debug

-target 1.8 –source 1.8 -g

9.2.3 Location of OpenSSL Libraries

The OpenSSL libraries are installed here:

  • OpenSSL .lib files are in:

    <NDDSHOME>\third_party\openssl-3.0.12\<architecture>\<format>\lib.
  • OpenSSL .dll files are in:

    <NDDSHOME>\third_party\openssl-3.0.12\<architecture>\<format>\bin.

Where:

The .dll filenames have a <version> and <CPU architecture> suffix. For example, libssl-1_1-x64.dll is for OpenSSL 1.1 on an x64 CPU.

9.3 Running Your Applications

Before running a Connext application, make sure that:

  1. You have a valid Visual Studio Redistributable installed on the target machine; which redistributable depends on your target architecture, see Table 9.1 Supported Windows Platforms in Connext 7.3.0 LTS.
  2. The location of the RTI libraries for your target architecture are in the PATH environment variable as noted in Table 9.10 Running Instructions for Windows Architectures.

    In some cases, when components need third-party libraries, you may need to add other locations, and set up other variables. We recommend using the provided rtisetenv_<architecture> script to set up your environment. (See Set Up Environment Variables, in the RTI Connext Getting Started Guide.)

For a detailed explanation on how to run your applications, see Run the Applications, in the RTI Connext Getting Started Guide.

Table 9.10 Running Instructions for Windows Architectures

RTI Architecture

Library Format

Environment Variables10

All supported Windows architectures for Java

N/A

Path=%NDDSHOME%\lib\<architecture>; %Path%

All other supported Windows architectures

Static (Release and Debug)

None required

Dynamic (Release and Debug)

Path=%NDDSHOME%\lib\<architecture>; %Path%

Debug versions of applications and the various Visual C++ DLLs are not redistributable. Therefore, if you want to run debug versions, you must have the compiler installed or manually copy the files to your target.

9.4 Support for the Modern C++ API

Connext provides two C++ APIs, which we refer to as the "Traditional C++" and "Modern C++" APIs. Both are supported on all Windows platforms.

  • The Modern C++ API requires C++11 compilers or newer.
  • The Traditional C++ API supports C++98 compilers or newer.

For more information on Modern C++, see "Traditional Vs. Modern C++" in the RTI Connext Core Libraries User's Manual.

9.5 Support for the .NET (C#) API

The C# API is supported on Intel x64 and Arm v8 CPUs.11 For more information on .NET, see the Connext C# API Reference.

9.6 Support for the Python API

The Python API is supported for Python 3.6 - 3.12, on Intel x64 CPUs. For more information, see the Connext Python API Reference.

9.7 Multicast Support

Multicast is supported on all platforms and is configured out of the box. That is, the default value for the initial peers list (NDDS_DISCOVERY_PEERS) includes a multicast address. See the online documentation for more information.

9.8 Transports

  • Shared memory: Shared memory is supported and enabled by default. The Windows operating system manages the shared memory resources automatically. Cleanup is not required.
  • UDPv4: Supported and enabled by default.
  • UDPv6: Supported but disabled on architectures that use Visual Studio. The peers list (NDDS_DISCOVERY_PEERS) must be modified to support UDPv6. No Traffic Class support.
  • TCP/IPv4: Supported on architectures that use Visual Studio. (This is not a built-in transport.)

9.9 Unsupported Features

These features are not supported on Windows platforms:

  • Controlling CPU Core Affinity
  • Setting thread names by Connext at the operating-system level in release mode

These features are not supported on Windows platforms with Arm v8 CPUs:

  • Python API
  • rtiddsgen server
  • RTI Connector for JavaScript

See also: Supported Platforms tables in the RTI Connext Core Libraries Release Notes. These tables show which RTI products are supported for each platform.

9.10 Monotonic Clock Support

The monotonic clock (described in Configuring the Clock per DomainParticipant, in the RTI Connext Core Libraries User's Manual) is supported on all Windows platforms.

9.11 Thread Configuration

See these tables:

Table 9.11 Thread Settings for Windows Platforms

Applicable Thread

DDS_ThreadSettings_t

Platform-Specific Setting

Asynchronous Publisher,

Asynchronous flushing thread,

mask

OS default thread type

priority

0

stack_size

OS default thread stack size

cpu_list

CPU core affinity not supported

cpu_rotation

CPU core affinity not supported

Database thread

mask

DDS_THREAD_SETTINGS_STDIO

priority

-3

stack_size

OS default thread stack size

cpu_list

CPU core affinity not supported

cpu_rotation

CPU core affinity not supported

Event thread

mask

DDS_THREAD_SETTINGS_STDIO | DDS_THREAD_SETTINGS_FLOATING_POINT

priority

-2

stack_size

OS default thread stack size

cpu_list

CPU core affinity not supported

cpu_rotation

CPU core affinity not supported

ReceiverPool threads

mask

DDS_THREAD_SETTINGS_STDIO | DDS_THREAD_SETTINGS_FLOATING_POINT

priority

2

stack_size

OS default thread stack size

cpu_list

CPU core affinity not supported

cpu_rotation

CPU core affinity not supported

Table 9.12 Thread-Priority Definitions for Windows Platforms

Thread-Priority Definition

Operating-System Priority

THREAD_PRIORITY_DEFAULT

0

THREAD_PRIORITY_HIGH

3

THREAD_PRIORITY_ABOVE_NORMAL

2

THREAD_PRIORITY_NORMAL

0

THREAD_PRIORITY_BELOW_NORMAL

-2

THREAD_PRIORITY_LOW

-3

Table 9.13 Thread Kinds for Windows Platforms

Thread Kinds

Operating-System Configuration12

DDS_THREAD_SETTINGS_FLOATING_POINT 

N/A

DDS_THREAD_SETTINGS_STDIO

DDS_THREAD_SETTINGS_REALTIME_PRIORITY

DDS_THREAD_SETTINGS_PRIORITY_ENFORCE

9.12 Support for 'Find Package' CMake Script

The 'Find Package' CMake script is supported on all Windows platforms except those on x86 CPUs.

For information on using this script, see 2.5 Building with CMake.

9.13 Durable Writer History and Durable Reader State Features

The Durable Writer History and Durable Reader State features have been tested with all supported Windows platforms.

9.14 Backtrace Support

To support the display of the backtrace on Windows systems, you need the Dbghelp.dll and NtDll.dll libraries. Without these libraries, the backtrace will not be available.

  • To get the latest version of DbgHelp.dll, go to https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk and download Debugging Tools for Windows. Refer to “Calling the DbgHelp Library” for information on proper installation.
  • NtDll.dll exports the Windows Native API. It is installed automatically during the installation of the Windows operating system.

On 32-bit Windows architectures: You must use the /Oy- optimization flag to disable "Frame-Pointer Omission" optimization.

See https://docs.microsoft.com/en-us/cpp/build/reference/oy-frame-pointer-omission?view=vs-2019.

See also Logging a Backtrace for Failures, in the RTI Connext Core Libraries User's Manual.

9.15 Support for Remote Procedure Calls (RPC)

RPC is an experimental feature available only for the C++11 API. It is supported on all Windows platforms.

See Remote Procedure Calls, in the RTI Connext Core Libraries User's Manual.

9.16 Domain ID Support

On Windows platforms, you should avoid using ports 49152 through 65535 for inbound traffic. Connext’s ephemeral ports (see Ports Used for Communication, in the RTI Connext Core Libraries User's Manual) may be within that range (see https://msdn.microsoft.com/en-us/library/windows/desktop/ms737550(v=vs.85).aspx).

With the default RtpsWellKnownPorts settings, port 49152 corresponds to domain ID 167, so using domain IDs 168 through 232 on Windows platforms introduces the risk of a port collision and failure to create the DomainParticipant when using multicast discovery. You may see this error:

RTIOsapiSocket_bindWithIP:OS bind() failure, error 0X271D: An attempt was made to access a socket in a way forbidden by its access permissions.