Why do I need to link against the dynamic Windows C Runtime in RTI Connext DDS 5.3.0?
Starting with Connext DDS 5.3.0, all Connext DDS libraries for Windows platforms (static release/debug, dynamic release/debug) now link with the dynamic Windows C Runtime (CRT).
If you have previous Windows projects that were linking with the Connext DDS static libraries, it will be necessary to change the Runtime Library settings: from /MT to /MD, and from /MTd to /MDd respectively. See Linking with Dynamic Windows C Run-Time in the RTI Connext DDS Core Libraries Platform Notes for further details about the necessary linking settings.
The main reasons for changing from static to dynamic linking with the CRT are the following:
- You may be linking with third-party products that will likely be using the dynamic CRT. By switching to the dynamic CRT, you will avoid potential conflicts.
- By dynamically linking with the CRT, you can update the CRT libraries independently in case there are critical bugs in the CRT. So, you won’t need to require new Connext DDS libraries or recompile your application.
- Mixing the static CRT with the dynamic CRT may be problematic and is not recommended, because you will end up with multiple heaps. For example, memory allocated from the static CRT should not be released with the dynamic CRT and vice-versa.
- By dynamically linking with the CRT, the size of your executables will be smaller.