First, see the basic instructions for compiling on Windows systems in "Building Applications" in the User's Manual.
The following tables provide supplemental information. Supported Windows Platforms lists the architectures supported on Windows operating systems.
Operating System |
CPU |
Visual Studio® Version |
RTI Architecture Abbreviation |
JDK Version |
|
Windows 7 |
x86 |
VS 2010 SP1 |
i86Win32VS2013 |
4.0 |
1.7 or 1.8 |
x64 |
VS 2010 SP1 |
x64Win64VS2010 |
4.0 |
||
Windows 8 |
x86 |
VS 2012 Update 4 |
i86Win32VS2012 |
4.5 |
|
VS 2013 Update 4 |
i86Win32VS2013 |
4.5.1 |
|||
x64 |
VS 2012 Update 4 |
x64Win64VS2012 |
4.5 |
||
VS 2013 Update 4 |
x64Win64VS2013 |
4.5.1 |
|||
Windows 8.1 |
x86 |
VS 2013 Update 4 |
i86Win32VS2013 |
4.5.1 |
|
x64 |
VS 2013 Update 4 |
x64Win64VS2013 |
4.5.1 |
||
Windows 10 |
x86 |
VS 2015 Update 1 |
i86Win32VS2015 |
4.6 |
|
x64 |
VS 2015 Update 1 |
x64Win64VS2015 |
4.6 |
||
Windows 2003 |
x86 |
VS 2008 SP1 |
i86Win32VS2008 |
2.0 |
|
x64 |
VS 2008 SP1 |
x64Win64VS2008 |
2.0 |
||
Windows Server 2008 R2 |
x64 |
VS 2010 SP1 |
x64Win64VS2010 |
4.0 |
|
Windows Server 2012 R2 |
x64 |
VS 2012 Update 4 |
x64Win64VS2012 |
4.5 |
|
VS 2013 Update 4 |
x64Win64VS2013 |
4.5.1 |
|||
VS 2015 Update 1 |
x64Win64VS2015 |
4.6 |
|||
Windows Vista |
x86 |
VS 2008 SP1 |
i86Win32VS2008 |
2.0 |
|
x64 |
VS 2008 SP1 |
x64Win64VS2008 |
2.0 |
||
Windows XP Pro SP2 2Windows XP: If you are using JDK 5.0 and want to use Intel’s HyperThreading technology, use JDK 5.0 Update 6 (build 1.5.0_06), which includes fixes to JNI and HyperThreading. (If you must use Update 5 (build 1.5.0_05), you should disable HyperThreading.)3Windows XP does not support IP_TOS unless registry changes are made. See http://support.microsoft.com/kb/248611, http://www.microsoft.com/technet/technetmag/issues/2007/02/CableGuy/default.aspx. |
x86 |
VS 2008 SP1 |
i86Win32VS2008 |
2.0 |
|
x64 |
VS 2008 SP1 |
x64Win64VS2008 |
2.0 |
The compiler flags and the libraries you will need to link into your application are listed in the following tables:
See also:
To use libraries that are statically linked into an application, link in all of the libraries listed in one of the rows of these tables. To use dynamic link libraries (DLL) on Windows systems, link in all of the libraries listed in one of the ‘Dynamic’ sections of the appropriate table. When the application executes, it will attempt to dynamically link in the libraries, which are in the directory $(NDDSHOME)\lib\<architecture> (this directory must be placed on the path before the executable is started).
Windows libraries are provided in formats with and without debugging symbols. Choose the format appropriate for your current work. Do not mix libraries built for different formats.
Running Instructions for Windows Architectures provides details on the environment variables that must be set at run time for a Windows architecture.
For details on how the libraries were built by RTI, see Library-Creation Details for Windows Architectures. This information 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.
API |
Library Format |
RTI Libraries or Jar Files 4Choose nddscpp*.* for the Traditional C++ API or nddscpp2*.* for the Modern C++ API. 5The RTI C/C++/Java libraries are in <NDDSHOME>\lib\<architecture>. Jar files are in <NDDSHOME>\lib\java. 6Some library names include a [version], which depends on your version of .NET. For .NET 2.0, omit the [version].For other .NET versions, use the digits, such as 451 or 46. See Supported Windows Platforms.for supported .NET versions. |
Required System Libraries |
Required Compiler Flags |
C |
Static Release |
nddscz.lib |
netapi32.lib advapi32.lib user32.lib ws2_32.lib |
/D “RTI_WIN32” /MT |
Static Debug |
nddsczd.lib |
/D “RTI_WIN32” /MTd |
||
Dynamic Release |
nddsc.lib |
/D “RTI_WIN32” |
||
Dynamic Debug |
nddscd.lib |
/D “RTI_WIN32” |
||
C++ |
Static Release |
nddscppz.lib nddscz.lib |
netapi32.lib |
/D “RTI_WIN32” /MT |
Static Debug |
nddscppzd.lib nddsczd.lib |
/D “RTI_WIN32” /MTd |
||
Dynamic Release |
nddscpp.lib nddsc.lib |
/D “RTI_WIN32” |
||
Dynamic Debug |
nddscppd.lib nddscd.lib |
/D “RTI_WIN32” |
||
C++/CLI |
Release |
nddscpp.lib nddsdotnet[version].dll |
N/A |
/D “RTI_WIN32” |
Debug |
nddscppd.lib nddsdotnet[version]d.dll |
/D “RTI_WIN32” |
||
C# |
Release |
nddsdotnet[version].dll rticonnextmsgdotnet[version].dll |
N/A |
N/A |
Debug |
nddsdotnet[version]d.dll rticonnextmsgdotnet[version]d.dll |
|||
Java |
Release |
nddsjava.jar |
N/A |
N/A |
Debug |
nddsjavad.jar |
API |
Library Format |
RTI Libraries or Jar Files 7The RTI C/C++/Java libraries are in <NDDSHOME>\lib\<architecture>. Jar files are in <NDDSHOME>\lib\java. 8The *rticonnextmsg* library only applies if you have the RTI Connext DDS Professional, Evaluation, or Basic package type. It is not provided with the RTI Connext DDS Core package type. 9Some library names include a [version], which depends on your version of .NET. For .NET 2.0, omit the [version].For other .NET versions, use the digits, such as 451 or 46. See Supported Windows Platforms.for supported .NET versions. |
Required System Libraries |
Required Compiler Flags |
C |
Static Release |
nddscz.lib |
netapi32.lib |
/Gd /MT /D “WIN32” |
Static Debug |
nddsczd.lib |
/Gd /MTd /D “WIN32” |
||
Dynamic Release |
nddsc.lib |
/Gd /MD /D “WIN32” |
||
Dynamic Debug |
nddscd.lib |
/Gd /MDd /D “WIN32” |
||
C++ |
Static Release |
nddscppz.lib |
netapi32.lib |
/Gd /EHsc /MT /D “WIN32” |
Static Debug |
nddscppzd.lib |
/Gd /EHsc /MTd /D “WIN32” |
||
Dynamic Release |
nddscpp.lib |
/Gd /EHsc /MD /D “WIN32” |
||
Dynamic Debug |
nddscppd.lib |
/Gd /EHsc /MDd /D “WIN32” |
||
C# |
Release |
nddsdotnet<version>.dll rticonnextmsgdotnet<version>.dll |
N/A |
N/A |
Debug |
nddsdotnet<version>d.dll rticonnextmsgdotnet<version>d.dll |
|||
C++/CLI |
Release |
nddscpp.lib rticonnextmsgdotnet<version>.dll |
netapi32.lib |
/Gd /EHsc /MD /D “WIN32” |
Debug |
nddscppd.lib rticonnextmsgdotnet<version>d.dll |
/Gd /EHsc /MDd /D “WIN32” |
||
Java |
Release |
nddsjava.jar |
N/A |
N/A |
Debug |
nddsjavad.jar |
RTI Architecture |
Library Format |
|
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% |
RTI Architecture |
Library Format |
Compiler Flags Used by RTI |
---|---|---|
All 32-bit Windows architectures for .NET |
Dynamic Release |
/O2 /GL /D "WIN32" /D "NDEBUG" /D "NDDS_DLL_VARIABLE" |
Dynamic Debug |
/Od /D "WIN32" /D "_DEBUG" /D "NDDS_DLL_VARIABLE" |
|
All 64-bit Windows architectures for .NET |
Dynamic Release |
/O2 /GL /D "WIN64" /D "NDEBUG" /D "NDDS_DLL_VARIABLE" |
Dynamic Debug |
/Od /D "WIN64" /D "_DEBUG" /D "NDDS_DLL_VARIABLE" |
|
All 32-bit Windows architectures for Java |
Dynamic Release |
-target 1.4 –source 1.4 |
Dynamic Debug |
-target 1.4 –source 1.4 -g |
|
All 64-bit Windows architectures for Java |
Dynamic Release |
-target 1.4 –source 1.6 |
Dynamic Debug |
-target 1.4 –source 1.6 -g |
|
i86Win32VS2008 |
Static Release |
-DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=I80586 -DTARGET=\"i86Win32VS2008\" -DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0501 -DWIN32_LEAN_AND_MEAN |
Dynamic Release |
-DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=I80586 -DTARGET=\"i86Win32VS2008\" -DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0501 -DWIN32_LEAN_AND_MEAN |
|
Static Debug |
-DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=I80586 -DTARGET=\"i86Win32VS2008\" -DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0501 -DWIN32_LEAN_AND_MEAN |
|
Dynamic Debug |
-DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=I80586 -DTARGE T=\"i86Win32VS2008\" -DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0501 -DWIN32_LEAN_AND_MEAN |
|
i86Win32VS2010 |
Static Release |
-DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=I80586 -DTARGET=\"i86Win32VS2010\" -DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0501 -DWIN32_LEAN_AND_MEAN /O2 /Zi /MT |
Dynamic Release |
-DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=I80586 -DTARGET=\"i86Win32VS2010\" -DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0501 -DWIN32_LEAN_AND_MEAN |
|
Static Debug |
-DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=I80586 -DTARGET=\"i86Win32VS2010\" -DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0501 -DWIN32_LEAN_AND_MEAN |
|
Dynamic Debug |
-DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=I80586 -DTARGE T=\"i86Win32VS2010\" -DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0501 -DWIN32_LEAN_AND_MEAN |
|
i86Win32VS2012 |
Static Release |
-DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=I80586 -DTARGET=\"i86Win32VS2012\" -DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0501 -DWIN32_LEAN_AND_MEAN /O2 /Zi /MT |
Dynamic Release |
-DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=I80586 -DTARGET=\"i86Win32VS2012\" -DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0501 -DWIN32_LEAN_AND_MEAN /O2 /Zi /MD |
|
Static Debug |
-DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=I80586 -DTARGET=\"i86Win32VS2012\" -DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0501 -DWIN32_LEAN_AND_MEAN /Od /ZI /MTd |
|
Dynamic Debug |
-DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=I80586 -DTARGE T=\"i86Win32VS2012\" -DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0501 -DWIN32_LEAN_AND_MEAN /Od /ZI /MDd |
|
i86Win32VS2013 |
Static Release |
-DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=I80586 -DTARGET=\"i86Win32VS2013\" -DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0501 -DWIN32_LEAN_AND_MEAN /O2 /Zi /MT |
Dynamic Release |
-DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=I80586 -DTARGET=\"i86Win32VS2013\" -DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0501 -DWIN32_LEAN_AND_MEAN /O2 /Zi /MD |
|
Static Debug |
-DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=I80586 -DTARGET=\"i86Win32VS2013\" -DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0501 -DWIN32_LEAN_AND_MEAN /Od /ZI /MTd |
|
Dynamic Debug |
-DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=I80586 -DTARGE T=\"i86Win32VS2013\" -DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0501 -DWIN32_LEAN_AND_MEAN /Od /ZI /MDd |
|
i86Win32VS2015 |
Static Release |
-DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=I80586 -DTARGET=\"i86Win32VS2015\" -DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0501 -DWIN32_LEAN_AND_MEAN /O2 /Zi /MT |
Dynamic Release |
-DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=I80586 -DTARGET=\"i86Win32VS2015\" -DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0501 -DWIN32_LEAN_AND_MEAN /O2 /Zi /MD |
|
Static Debug |
-DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=I80586 -DTARGET=\"i86Win32VS2015\" -DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0501 -DWIN32_LEAN_AND_MEAN /Od /ZI /MTd |
|
Dynamic Debug |
-DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=I80586 -DTARGE T=\"i86Win32VS2015\" -DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0501 -DWIN32_LEAN_AND_MEAN /Od /ZI /MDd |
|
x64Win64VS2008
Note: linker requires /MACHINE:X64 option. |
Static Release |
/W3 -DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=AMD64-DTARGET=\"x64Win64VS2008\" -DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0501 -DWIN32_LEAN_AND_MEAN |
Dynamic Release |
/W3 -DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=AMD64-DTARGET=\"x64Win64VS2008\" -DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0501 -DWIN32_LEAN_AND_MEAN |
|
Static Debug |
/W3 -DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=AMD64-DTARGET=\"x64Win64VS2008\" -DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0501 -DWIN32_LEAN_AND_MEAN |
|
Dynamic Debug |
/W3 -DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=AMD64-DTARGET=\"x64Win64VS2008\" -DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0501 -DWIN32_LEAN_AND_MEAN |
|
x64Win64VS2010
Note: linker requires /MACHINE:X64 option. |
Static Release |
/W3 -DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=AMD64-DTARGET=\"x64Win64VS2010\" -DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0501 -DWIN32_LEAN_AND_MEAN |
Dynamic Release |
/W3 -DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=AMD64-DTARGET=\"x64Win64VS2010\" -DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0501 -DWIN32_LEAN_AND_MEAN |
|
Static Debug |
/W3 -DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=AMD64-DTARGET=\"x64Win64VS2010\" -DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0501 -DWIN32_LEAN_AND_MEAN |
|
Dynamic Debug |
/W3 -DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=AMD64-DTARGET=\"x64Win64VS2010\" -DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0501 -DWIN32_LEAN_AND_MEAN |
|
x64Win64VS2012
Note: linker requires /MACHINE:X64 option.
|
Static Release |
/W3 -DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=AMD64-DTARGET=\"x64Win64VS2012\" -DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0501 -DWIN32_LEAN_AND_MEAN |
Dynamic Release |
/W3 -DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=AMD64-DTARGET=\"x64Win64VS2012\" -DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0501 -DWIN32_LEAN_AND_MEAN |
|
Static Debug |
/W3 -DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=AMD64-DTARGET=\"x64Win64VS2012\" -DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0501 -DWIN32_LEAN_AND_MEAN /Od /ZI /MTd |
|
Dynamic Debug |
/W3 -DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=AMD64-DTARGET=\"x64Win64VS2012\" -DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0501 -DWIN32_LEAN_AND_MEAN /Od /ZI /MDd |
|
x64Win64VS2013
Note: linker requires /MACHINE:X64 option. |
Static Release |
/W3 -DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=AMD64-DTARGET=\"x64Win64VS2013\" -DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0501 -DWIN32_LEAN_AND_MEAN |
Dynamic Release |
/W3 -DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=AMD64-DTARGET=\"x64Win64VS2013\" -DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0501 -DWIN32_LEAN_AND_MEAN |
|
Static Debug |
/W3 -DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=AMD64-DTARGET=\"x64Win64VS2013\" -DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0501 -DWIN32_LEAN_AND_MEAN /Od /ZI /MTd |
|
Dynamic Debug |
/W3 -DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=AMD64-DTARGET=\"x64Win64VS2013\" -DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0501 -DWIN32_LEAN_AND_MEAN /Od /ZI /MDd |
|
x64Win64VS2015
Note: linker requires /MACHINE:X64 option. |
Static Release |
/W3 -DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=AMD64-DTARGET=\"x64Win64VS2015\" -DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0501 -DWIN32_LEAN_AND_MEAN |
Dynamic Release |
/W3 -DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=AMD64-DTARGET=\"x64Win64VS2015\" -DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0501 -DWIN32_LEAN_AND_MEAN |
|
Static Debug |
/W3 -DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=AMD64-DTARGET=\"x64Win64VS2015\" -DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0501 -DWIN32_LEAN_AND_MEAN /Od /ZI /MTd |
|
Dynamic Debug |
/W3 -DPtrIntType=long -DCSREAL_IS_FLOAT -DCPU=AMD64-DTARGET=\"x64Win64VS2015\" -DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0501 -DWIN32_LEAN_AND_MEAN /Od /ZI /MDd |
You must have Visual Studio 2008 Service Pack 1 or the Microsoft Visual C++ 2008 SP1 Redistributable Package installed on the machine where you are running an application linked with dynamic libraries.
This includes dynamically linked C/C++ and all .NET and Java applications. The Microsoft Visual C++ 2008 SP1 Redistributable Package can be downloaded from the following Microsoft websites:
For x86 architectures:
For x64 architectures:
You must have Visual Studio 2010 Service Pack 1 or the Microsoft Visual C++ 2010 SP1 Redistributable Package installed on the machine where you are running an application linked with dynamic libraries.
This includes dynamically linked C/C++ and all .NET and Java applications. To run an application built with debug libraries of the above RTI architecture packages, you must have Visual Studio 2010 Service Pack 1 installed.
The Microsoft Visual C++ 2010 Service Pack 1 Redistributable Package can be obtained from the following Microsoft websites:
For x86 architectures:https://www.microsoft.com/en-us/download/details.aspx?id=8328
For x64 architectures: https://www.microsoft.com/en-us/download/details.aspx?id=13523
You must have the Visual C++ Redistributable for Visual Studio 2012 Update 4 installed on the machine where you are running an application linked with dynamic libraries. This includes dynamically linked C/C++ and all .NET and Java applications.
You can download Visual C++ Redistributable for Visual Studio 2012 Update 4 from this Microsoft website: http://www.microsoft.com/en-ca/download/details.aspx?id=30679
You must have Visual C++ Redistributable for Visual Studio 2013 Update 4 installed on the machine where you are running an application linked with dynamic libraries. This includes C/C++ dynamically linked and all .NET and Java applications.
You can download Visual C++ Redistributable for Visual Studio 2013 Update 4 from this Microsoft website: https://www.microsoft.com/en-us/download/details.aspx?id=40784
You must have Visual C++ Redistributable for Visual Studio 2015 Update 1 installed on the machine where you are running an application linked with dynamic libraries. This includes C/C++ dynamically linked and all .NET and Java applications.
You can download Visual C++ Redistributable for Visual Studio 2015 Update 1 from this Microsoft website: https://www.microsoft.com/en-us/download/details.aspx?id=49984
On all Windows systems prior to Windows Vista, the following registry setting change will improve performance when sending UDP datagrams of size larger than 1024 bytes:
Under HKEY_LOCAL_MACHINE, SYSTEM, CurrentControlSet, Services, AFD, Parameters, add the following:
DWORD: Name=FastSendDatagramThreshold, Value = 65536
This will improve the Connext DDS performance for data sizes larger than 1024 bytes (RTPS overhead included). It allows the datagrams to bypass the I/O subsystem by using a blocking send call instead of a buffer copy in the Windows Network stack.
To avoid communication problems in your Connext DDS application, use the dynamic MFC library, not the static version.
If you use the static version, your Connext DDS application may stop receiving DDS samples once the Windows sockets are initialized.
To maintain proper concurrency control, .NET threads that call a Connext DDS API must correspond one-to-one with operating system threads. In most applications, this will always be the case. However, it may not be the case if the threads you are using are managed in a more advanced way—for example, Microsoft SQL Server does this, or you may do so in your own application.
If you intend to call Connext DDS APIs from explicitly managed threads, you must first call Thread.BeginThreadAffinity() in each such thread to ensure that it remains attached to a single operating system thread. See http://msdn.microsoft.com/en-us/library/system.threading.thread.beginthreadaffinity.aspx.
Note: When done making RTI calls from a given thread, call Thread.EndThreadAffinity().
In any case, be sure to consult the RTI API documentation for more information about the thread safety contracts of the operations you use.
To use the Durable Writer History and Durable Reader State features, you must install a relational database such as MySQL.
In principle, you can use any database that provides an ODBC driver, since ODBC is a standard. However, not all ODBC databases support the same feature set. Therefore, there is no guarantee that the persistent durability features will work with an arbitrary ODBC driver.
We have tested the following driver:
Note: Starting with 4.5e, support for the TimesTen database has been removed.
To use MySQL, you also need the MySQL ODBC 5.1.6 (or higher) driver.
The Durable Writer History and Durable Reader State features have been tested with the following architectures:
For more information on database setup, please see the RTI Connext DDS Core Libraries Getting Started Guide Addendum for Database Setup.
To use a Windows XP point-to-point protocol (PPP) link (such as a serial cable), the UDP transport properties for the Connext DDS applications running on the PPP server machine must be configured with multicast disabled for the PPP server interface(s).
To disable multicast for an interface, change the UDPv4 transport properties as follows:
// Disable multicast for PPP interface because it causes problems: char *bad_interfaces[] = { "192.168.250.100"}; // interface addr const int num_bad_interfaces = sizeof(bad_interfaces)/sizeof(bad_interfaces[0]); UDPv4Properties.parent.deny_multicast_interfaces_list = bad_interfaces; UDPv4Properties.parent.deny_multicast_interfaces_list_length = num_bad_interfaces;
Failure to do so will result in Connext DDS being unable to send any data at all over the PPP link.
Notes:
Connext DDS provides two different C++ APIs, which we refer to as the "Traditional C++" and "Modern C++" APIs. The Modern C++ API is available for all Windows platforms.
For more information on Modern C++, see "Traditional Vs. Modern C++" in the User's Manual.
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.
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.)
The monotonic clock (described in "Clock Selection" in the User's Manual) is supported on all Windows platforms.
Thread Settings for Windows Platforms lists the thread settings for Windows platforms.
Thread-Priority Definitions for Windows Platforms and Thread Kinds for Windows Platforms list the thread-priority definitions and thread kinds, respectively.
Applicable Thread |
DDS_ThreadSettings_t |
Platform-Specific Setting |
Asynchronous Publisher, |
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 |
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 |
Thread Kinds |
Operating-System Configuration11See Windows manuals for additional information. |
DDS_THREAD_SETTINGS_FLOATING_POINT |
N/A |
DDS_THREAD_SETTINGS_STDIO |
|
DDS_THREAD_SETTINGS_REALTIME_PRIORITY |
|
DDS_THREAD_SETTINGS_PRIORITY_ENFORCE |
Support for controlling CPU core affinity (described in "Controlling CPU Core Affinity" in the User's Manual) is not available for Windows platforms.
The Durable Writer History and Durable Reader State features are only supported on platforms that use 32-bit/64-bit Visual Studio 2008 and Visual Studio 2010.
RTI Distributed Logger is supported on all Windows platforms. lists the additional libraries you will need in order to use Distributed Logger.
Language |
Static |
Dynamic |
||
Release |
Debug |
Release |
Debug |
|
C |
rtidlcz.lib |
rtidlczd.lib |
rtidlc.dll |
rtidlcd.dll |
C++ (Traditional API) |
rtidlcz.lib |
rtidlczd.lib |
rtidlc.dll |
rtidlcd.dll |
Java |
N/A |
N/A |
distlog.jar |
distlogd.jar |
Make sure you are consistent in your use of static, dynamic, debug and release versions of the libraries. For example, if your Connext DDS application is linked with the static release version of the Connext DDS 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 resulting, in the termination of the process.
Static Release |
Static Debug |
Dynamic Release |
Dynamic Debug |
rtimonitoringz.lib |
rtimonitoringzd.lib |
rtimonitoring.lib |
rtimonitoringd.lib |
To use the Secure WAN Transport APIs, add the libraries from to your project files.
Library Format |
RTI Secure WAN Transport Libraries12These libraries are in <<NDDSHOME>\lib\<architecture> |
OpenSSL Libraries13These libraries are in <openssl install dir>\<architecture>/lib, where <openssl install dir> is where OpenSSL is installed |
---|---|---|
Dynamic Release |
nddstransportwan.lib nddstransporttls.lib |
ssleay32.lib libeay32.lib |
Dynamic Debug |
nddstransporttlsd.lib nddstransportwand.lib |
|
Static Release |
nddstransportwanz.lib nddstransporttlsz.lib |
|
Static Debug |
nddstransportwanzd.lib nddstransporttlszd.lib |
To use the TCP Transport APIs, link against the additional libraries from Additional Libraries for Using RTI TCP Transport APIs on Windows Systems or Additional Libraries for using RTI TCP Transport APIs on Windows Systems with TLS Enabled. (Select the files appropriate for your chosen library format.)
Library Format |
RTI TCP Transport Libraries14The libraries are in <NDDSHOME>\lib\<architecture> |
Dynamic Release |
nddstransporttcp.dll |
Dynamic Debug |
nddstransporttcpd.dll |
Static Release |
nddstransporttcpz.lib |
Static Debug |
nddstransporttcpzd.lib |
Library Format |
RTI TLS Libraries15The libraries are in <NDDSHOME>\lib\<architecture> |
Dynamic Release |
nddstls.dll |
Dynamic Debug |
nddstlsd.dll |
Static Release |
nddstlsz.dll |
Static Debug |
nddstlszd.dll |
OpenSSL Libraries |
ssleay32.lib libeay32.lib |
© 2016 RTI