Я прочитал аргументы с обеих сторон о том, следует ли статически или динамически ссылаться на библиотеку времени выполнения C в проектах Visual Studio, и я все еще не совсем уверен, что думать.
Мой проект подключается к некоторым сторонним библиотекам (Python, HDF5, Trilinos и Microsoft MPI), каждый из которых должен быть построен с той же библиотекой времени исполнения, что и мой окончательный исполняемый файл (иначе они не могут быть связаны друг с другом). При связывании статически каждая из этих библиотек будет содержать копию среды выполнения C. Я читал, что это может вызвать проблемы, потому что окончательный исполняемый файл будет содержать несколько копий среды выполнения, ни одна из которых не может взаимодействовать друг с другом. Но не будет ли компоновщик жаловаться на то, что одни и те же символы были бы размножены?
Я бы хотел избежать "DLL Hell", но я беспокоюсь о коварных ошибках, которые могут возникнуть в результате статической привязки в нескольких экземплярах среды выполнения. Я читаю вещи неправильно?
Кроме того, я использую Visual Studio 2005, и я прочитал, что среда выполнения пакета обновления 1 не поддерживает обратную совместимость. Означает ли это, что приложение, построенное без SP1, не будет запущено на машине с пакетом SP1, даже если у них есть одно и то же имя (например, msvcr80.dll)?